BigQuery - 缓存可能不起作用。我该如何诊断?

Posted

技术标签:

【中文标题】BigQuery - 缓存可能不起作用。我该如何诊断?【英文标题】:BigQuery - Cacheing possibly isn't working. How do I diagnose? 【发布时间】:2019-07-22 03:57:14 【问题描述】:

我有一个通过用 Java 编写的 Google Cloud Endpoints API 触发的 BigQuery 查询,并且我已将 queryJobConfiguration 配置如下,以使用 BigQuery 查询缓存:

    // create new big query configuration
    BqEntity entity = new BqEntity();
    entity.queryJobConfiguration = QueryJobConfiguration
            .newBuilder(query)
            .setUseLegacySql(false)
            .setUseQueryCache(true)
            .build();

缓存没有似乎在工作,我需要明确地确认这是否真的如此。当我通过 Web 前端重新加载数据来重新发出查询时,会产生与上次运行时相同的查询,我没有看到性能有任何改进,并且出现了性能问题 在后端(可能有很多因素 - 我想先检查 BigQuery 缓存是否存在问题)。

我的问题是 - 我如何检查缓存是否用于查询?我在 Google Cloud Console 中没有看到任何可以让我查看已运行的查询以及是否使用缓存的地方(我正在寻找 SQL Server Profiler 提供的东西的类型,但在谷歌云控制台,谷歌搜索后没有找到任何东西)。

【问题讨论】:

【参考方案1】:

缓存可能不起作用。如何诊断? 我需要明确地确认是否真的是这样

有两种常用方法可以确定 BigQuery 是否使用缓存返回结果:

如果您使用 GCP 控制台或经典 BigQuery 网页界面,则结果字符串不包含有关已处理字节数的信息,并显示“缓存”一词。

UI 中的缓存指示器

如果您使用BigQuery API,则查询结果中的cacheHit 属性设置为true。

【讨论】:

感谢 Mikhail(再次),我已经知道您所指的功能 - 我需要做的是确定查询 通过 API 运行 是否正在使用缓存。你知道是否有办法查看以编程方式运行的查询并检查是否使用了缓存? 啊,好的,我正确地阅读了您的答案。所以我找到了一种方法,可以将查询作为com.google.cloud.bigquery.Job 运行,然后使用它的 getStatistics 方法。这应该可以让我以某种方式访问​​您所指的 cacheHit 属性,谢谢。我觉得应该有更简单的方法来做到这一点! 嗨@Mikhail。我仍然没有找到如何访问您所指的 cacheHit 属性。我在这里提出了另一个问题,任何建议都会很棒! - ***.com/questions/57141083/…

以上是关于BigQuery - 缓存可能不起作用。我该如何诊断?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery DataTables iDisplayLength 不起作用。我该如何解决?

BigQuery - 联合上的相关子查询不起作用

如何将特定日期格式加载到 BigQuery

CSS3:为啥这个过渡不起作用,我该如何解决?

STM32:自己的功能不起作用。我该如何解决?

BigQuery 加载本地文件不起作用,位置有问题