使用“探索”查询跟踪器和“效果”面板监控查询性能

探索查询跟踪器探索性能面板提供探索查询的逐步性能数据。这些数据有助于确定排查和解决查询性能问题的关键切入点,并提供改进建议。

探索查询跟踪器

探索查询跟踪器会在查询运行时显示探索查询在三个查询阶段中的进度。

如果查询执行时间过长,查询跟踪器可以指明查询的哪个阶段导致了性能问题。这有助于确定可能出现性能问题的位置,以及优化工作最有效的位置。

只要探索 可视化图表 面板或探索 数据 面板处于打开状态,探索运行时就会显示查询跟踪器。

探索性能 面板

如需查看探索性能 面板,请点击查看性能详情 链接,该链接适用于已运行的任何探索查询。

性能 面板会显示查询在 三个查询阶段 中花费的时间,并包含指向性能文档和 查询历史记录 系统活动信息中心 的链接,该信息中心会显示查询和用于创建查询的探索的当前和历史性能数据。

查询阶段

当 Looker 探索运行数据库查询时,查询会按以下三个阶段执行:

查询初始化阶段

查询初始化 阶段,Looker 会执行在将查询发送到数据库之前所需的所有任务。查询初始化 阶段包括以下任务:

了解查询性能指标文档页面介绍了如何使用查询性能指标 探索在系统活动中查看查询的详细细分。查询跟踪器的查询初始化 阶段包括查询性能指标 探索的异步工作器阶段初始化阶段连接处理阶段 中描述的事件。

正在运行查询阶段

正在运行查询 阶段,Looker 会连接并查询您的数据库,以便返回查询结果。此阶段的性能问题可能表明外部数据库存在问题,例如 PDT 重建时间过长且可能需要优化,或者外部数据库表可能需要优化。正在运行查询 阶段包括以下任务:

  • 构建数据库中探索查询所需的任何 PDT
  • 在数据库中运行请求的查询

了解查询性能指标文档页面介绍了如何使用查询性能指标 探索在系统活动中查看查询的详细细分。查询跟踪器的正在运行查询 阶段包括查询性能指标 探索的主查询阶段 中描述的事件。

如果您在此阶段遇到性能问题,可以采取以下措施:

  • 尽可能使用 many_to_one 联接构建探索。将视图从最精细的级别联接到最高细节级别 (many_to_one),通常可提供最佳查询性能。
  • 尽可能最大程度利用缓存,并尽可能使其与您的 ETL 政策保持同步,以减少数据库查询流量。默认情况下,Looker 会将查询缓存一小时。您可以使用 persist_with 参数在探索中应用 数据组 ,从而控制缓存政策,并使 Looker 数据刷新与您的 ETL 流程同步。最大程度利用缓存可让 Looker 与后端数据流水线更紧密地集成,从而最大程度利用缓存,同时避免分析过时数据的风险。命名缓存政策可以应用于整个模型,也可以应用于各个探索和 永久性派生表 (PDT)。
  • 使用 Looker 的 汇总感知 功能创建汇总表或摘要表,Looker 可以在查询时尽可能使用这些表,尤其是在对大型数据库进行常见查询时。您还可以使用汇总感知功能大幅提升整个信息中心的性能。如需了解详情,请参阅汇总感知教程
  • 使用 PDT 进行更快的查询。将包含许多复杂或性能不佳的联接的探索,或包含子查询或子选择的维度转换为 PDT,以便在运行时之前预先联接视图并做好准备。
  • 如果您的 数据库方言支持增量 PDT,请配置 增量 PDT,以减少 Looker 重建 PDT 表所花费的时间。
  • 避免在探索中联接 Looker 中定义的串联 主键。请改为联接视图中构成串联主键的基本字段。或者,将视图重新创建为 PDT,并在表的 SQL 定义中预定义串联主键,而不是在视图的 LookML 中预定义。
  • 使用 SQL Runner 中的 Explain 工具 进行基准评测。EXPLAIN 会针对给定的 SQL 查询生成数据库查询执行计划的概览,让您可以检测可以优化的查询组件。如需了解详情,请参阅如何使用 EXPLAIN 社区帖子。
  • 声明索引。您可以直接在 Looker 的 SQL Runner 中查看每个表的索引,方法是点击表中的齿轮图标,然后选择 显示索引

    可以从索引中受益的最常见列是重要日期和外键。向这些列添加索引将提高几乎所有查询的性能。这也适用于 PDT。可以适当应用 LookML 参数,例如 indexessort keysdistribution

处理结果阶段

处理结果 阶段,Looker 会处理和呈现查询结果。处理结果 阶段包括以下任务:

了解查询性能指标文档页面介绍了如何使用查询性能指标 探索在系统活动中查看查询的详细细分。查询跟踪器的处理结果 阶段包括查询性能指标 探索的查询后阶段 中描述的事件。

如果您在此阶段遇到性能问题,可以采取以下措施:

  • 谨慎使用合并结果自定义字段、 和表计算等功能。这些功能旨在用作概念验证,以帮助您设计模型。 最佳做法是在 LookML 中硬编码任何常用计算和函数,这将生成要在数据库中处理的 SQL。过多的计算可能会争用 Looker 实例上的 Java 内存,导致 Looker 实例响应速度变慢。
  • 当存在大量视图文件时,限制模型中包含的视图数量。在单个模型中包含所有视图可能会降低性能。如果项目中存在大量视图,请考虑仅在每个模型中包含所需的视图文件。考虑为视图文件名使用策略性命名惯例,以便在模型中包含视图组。includes 参数文档中提供了一个示例。
  • 避免在信息中心图块和 Look 中默认返回大量数据点。返回数千个数据点的查询会消耗更多内存。确保尽可能通过以下方式限制数据:向信息中心、Look 和探索应用前端 过滤器,并在 LookML 级别使用 required filtersconditionally_filtersql_always_where 参数。
  • 谨慎使用所有结果选项下载或传送查询,因为某些查询可能非常大,并且在处理时会使 Looker 服务器不堪重负。