BigQuery缓存按时分区表的工作原理是什么?

时间:2017-11-13 13:52:49

标签: caching google-bigquery

与BigQuery文档相比,我们发现从流式数据分区表(标准SQL )中选择数据时, DOES 会缓存结果。

示例: 当我们使用以下内容对流式数据分区表执行确定性日期扫描时

where (_PARTITIONTIME > '2017-11-12' or _PARTITIONTIME is null)

...如果我们在该时间范围内触发相同的确切查询,BigQuery会将数据缓存5到20分钟。

在我对documentation的解释中,它声明它不应该缓存数据:

'当查询引用的任何表最近收到流式插入(流式缓冲区附加到表中)时,即使没有新行已到达'

重要说明:

  • 我们的测试查询会查询真正到达我们的心跳事件
  • 我们实际上想要这种缓存行为,因为我们并不总是需要将数据放到最后一秒。我们只想知道我们是否真的可以依赖这种行为。

我们的问题:

  • 这里发生了什么/为什么BQ缓存会发生?

  • 此数据保留在BQ缓存中的时间是随机的' (5-20​​分钟之间)。这是什么意思?

1 个答案:

答案 0 :(得分:3)

感谢您澄清问题。我认为忽略了我们没有禁用带有流数据的分区表的缓存。否则查询可能会返回过时的结果。

我们在更改表时使缓存无效。流入表将导致表更改。我想这就是为什么缓存在5到20分钟之间失效的原因。