作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们正在使用公共(public)数据集对 BigQuery 进行基准测试。我们使用同一张表并按天对它进行分区,但不清楚我们是否获得了很多好处。什么是好的平衡?
SELECT sum(score)
FROM `fh-bigquery.stackoverflow_archive.201906_posts_questions`
WHERE creation_date > "2019-01-01"
SELECT sum(score)
FROM `temp.questions_partitioned`
WHERE creation_date > "2019-01-01"
最佳答案
在对表进行分区时,您需要考虑为每个分区提供足够的数据。把每个分区想象成一个不同的文件——打开 365 个文件可能比打开一个大文件要慢。
在这种情况下,用于基准测试的表有 1.6 GB 的 2019 年数据(截至 6 月)。每个每日分区有 1.6GB/180 = 9 MB 的数据。
对于如此少量的数据 - 将其安排在日常分区中不会带来太多好处。考虑改为按年份对数据进行分区。请参阅以下问题以了解如何操作:
CREATE TABLE `temp.questions_partitioned`
PARTITION BY DATE(creation_date)
AS
SELECT *
FROM `fh-bigquery.stackoverflow_archive.201906_posts_questions`
CREATE TABLE `temp.questions_clustered`
PARTITION BY fake_date
CLUSTER BY creation_date
AS
SELECT *, DATE('2000-01-01') fake_date
FROM `fh-bigquery.stackoverflow_archive.201906_posts_questions`
SELECT sum(score)
FROM `temp.questions_clustered`
WHERE creation_date > "2019-01-01"
关于google-bigquery - 决定何时在 BigQuery 中对表进行分区时,有什么好的平衡点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58743050/
我是一名优秀的程序员,十分优秀!