将<select>
列指定为分区时-分区允许每次访问将数据保存在磁盘上。
现在,BigQuery还允许最多定义4个列,这些列将用作群集字段。
如果我正确理解它,则分区类似于TIMESTAMP
,群集字段类似于PK
。
因此,这意味着群集字段与如何将记录保存在磁盘上无关?
答案 0 :(得分:2)
如果我正确理解,分区就像PK
这是不正确的,分区不用于标识表中的行,而是使BigQuery可以将每个分区数据存储在不同的段中,因此当您按分区扫描表时,您仅扫描指定的分区,从而减少了扫描费用
集群字段就像索引
这是正确的群集字段,用作指向表中记录的指针,并且无论分区如何,都可以快速/最小地访问数据。这意味着您可以使用群集字段以最小的成本查询表交叉分区
我喜欢his medium post中的@Felipe图像,该图像可以很好地显示数据的存储方式。
注意:分区发生在插入时,而集群发生是由BigQuery执行的后台作业