首页 > 解决方案 > BigQuery - 缓存可能不起作用。我该如何诊断?

问题描述

我有一个 BigQuery 查询,它是通过用 Java 编写的 Google Cloud Endpoints API 触发的,并且我已将 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 提供的东西的类型,但在谷歌云控制台,谷歌搜索后没有找到任何东西)。

标签: sqlcachinggoogle-cloud-platformgoogle-bigquerybigdata

解决方案


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

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

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

UI 中的缓存指示器

在此处输入图像描述

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


推荐阅读