Bigquery 分区装饰器是否保证 return 数据按插入顺序排列?
Are Bigquery Partition decorators guaranteed to return data in order of inserts?
我有一个 table 以特定顺序插入数据。我是否保证通过使用 0-of-10 分区装饰器,查询是 运行 超过 table 的前 10%,按照插入数据的顺序,1-of-10分区装饰器会按照插入的顺序查询接下来的 10% 的数据吗?
分区装饰器上的计数 (*) 是否也会导致 table 扫描(因此成本非零)或者它是否仅使用元数据(因此是免费的)?
在 BigQuery 中,插入并不能保证顺序,因此您不应感到困惑。插入是 运行 在多个摄取节点上并行进行的异步作业,因此没有定义原子顺序。不仅在 BigQuery 中,而且其他数据库引擎也不保证您按插入顺序检索数据,因此这是您思维中的一个缺陷。如果您需要原子顺序而不是您应该检查其他数据库,例如 Redis,它们具有针对此类问题的特定数据类型。
SELECT title FROM [publicdata:samples.wikipedia@0]
在此示例中 @0
表示类似于 "show me how the table looked 7 days ago"(7 天是最旧的可用快照。因此它只是 table 的快照,并且与数据顺序无关。
当您检索数据时,您无法保证数据按插入顺序返回。
- 非常简单的统计只用元数据,而且费用全免。但是有些计数需要完整 table 扫描,并产生成本,主要是因为 where 条件。
我有一个 table 以特定顺序插入数据。我是否保证通过使用 0-of-10 分区装饰器,查询是 运行 超过 table 的前 10%,按照插入数据的顺序,1-of-10分区装饰器会按照插入的顺序查询接下来的 10% 的数据吗?
分区装饰器上的计数 (*) 是否也会导致 table 扫描(因此成本非零)或者它是否仅使用元数据(因此是免费的)?
在 BigQuery 中,插入并不能保证顺序,因此您不应感到困惑。插入是 运行 在多个摄取节点上并行进行的异步作业,因此没有定义原子顺序。不仅在 BigQuery 中,而且其他数据库引擎也不保证您按插入顺序检索数据,因此这是您思维中的一个缺陷。如果您需要原子顺序而不是您应该检查其他数据库,例如 Redis,它们具有针对此类问题的特定数据类型。
SELECT title FROM [publicdata:samples.wikipedia@0]
在此示例中@0
表示类似于 "show me how the table looked 7 days ago"(7 天是最旧的可用快照。因此它只是 table 的快照,并且与数据顺序无关。
当您检索数据时,您无法保证数据按插入顺序返回。
- 非常简单的统计只用元数据,而且费用全免。但是有些计数需要完整 table 扫描,并产生成本,主要是因为 where 条件。