2017-03-03 76 views
0

我有三个与BigQuery's cache有关的问题,因为从缓存中获取结果的能力大大降低了大型查询的成本。Big Query cache

  1. 如果数据没有被修改,是有办法再延长缓存比〜24小时默认。例如,如果我有一个在6个月内没有更改的静态数据集,该怎么办?

  2. 如果查询中存在细微的变化,但不影响它正在检索的信息,有没有办法从缓存中检索结果?例如:

    • SELECT first_name, last_name FROM mytable VS SELECT last_name, first_name FROM mytable(排序)
    • SELECT id, last_name FROM mytable VS SELECT id, last_name AS last, FROM mytable(别名)
    • select id from table VS SELECT id FROM table(CAPS)
  3. 如果数据集是是高速缓存自动失效改性?如果没有,是否有办法手动使该表的所有缓存失效?

回答

3
  • 1 - 有没有办法让高速缓存离开超过24小时,而不是将其复制到永久表中,然后使用它。通常结果比原始表格小得多,所以这可以为你工作。另外请记住,如果您的数据在90天内没有变化 - 其存储成本降低50% - 所谓long term storage

  • 2 - 是的。从技术上讲,你可以使用该临时(匿名)表作为常规表并查询它。虽然没有官方支持!呦可以找到完全合格的路径在各自的工作信息

  • 3 - 它是!

+0

谢谢!他们如何确定何时返回一个缓存的查询集呢?它是查询的输入字符串的校验和吗?或者是其他东西? – David542

+1

@ David542 - 主要标准 - 您的查询必须完全相同,并且基础数据自上次查询后未更改。有更多的在这里 - 详细信息在你的问题 –

+0

正确的,我想我的问题是用于声明:“'statistics.query.cacheHit返回为true'”,你需要满足什么条件返回'true'? – David542