【发布时间】:2019-03-17 10:40:39
【问题描述】:
我有一个分区/集群表如下:
当我运行这个查询时:
SELECT
projectId
FROM
`projectId.dataset.tables`
WHERE _PARTITIONTIME >= "2019-03-16 00:00:00" AND _PARTITIONTIME <= "2019-03-17 00:00:00"
AND projectId='myproject'
GROUP BY
projectId
limit 1
我看到 597 MB
的实际扫描但是,当我在前一天运行相同的查询时,如下所示:
SELECT
projectId
FROM
`projectId.dataset.tables`
WHERE _PARTITIONTIME >= "2019-03-15 00:00:00" AND _PARTITIONTIME <= "2019-03-16 00:00:00"
AND projectId='myproject'
GROUP BY
projectId
limit 1
我看到 122 MB
的实际扫描注意:如果我添加更多列,结果会更糟。
为了确保我的分区大小相同,我计算了每个分区中 projectId 的数量
SELECT _partitionTime as date, count(projectId) as count
FROM
`projectId.dataset.tables`
WHERE _PARTITIONTIME >= "2019-03-15 00:00:00" AND _PARTITIONTIME <= "2019-03-17 00:00:00"
GROUP BY
date
如您所见,今天分区的行数比前 2 天还要少
此外,我尝试使用此查询查询流式缓冲区,但未返回任何结果
SELECT projectId FROM `projectId.dataset.tables`
WHERE _PARTITIONTIME IS NULL
我的结论是流缓冲区正在影响集群表上的查询成本,但我不确定这是怎么发生的以及为什么会这样。
关于这里发生了什么以及为什么我在查询今天的分区时看到更高的成本的任何想法
【问题讨论】:
标签: google-bigquery