你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Synapse Analytics 中的历史查询存储和分析

历史查询分析是数据工程师的关键需求之一。 Azure Synapse Analytics 支持四种主要方法来分析查询历史记录和性能。 其中包括查询存储、DMV、Azure Log Analytics 和 Azure 数据资源管理器。

本文将介绍如何根据需求来使用这些选项。 查看分析查询历史记录的用例以及适用于每个用例的最佳方法。

客户需求 查询存储 DMV Azure Log Analytics Azure 数据资源管理器
现成的解决方案 需要启用 ✔️ 需要添加服务 需要添加服务
较长的分析周期 30 天 最多 10000 行历史记录 可自定义 可自定义
关键指标可用性 受限制 ✔️ 受限制 可自定义
使用 SQL 进行分析 ✔️ ✔️ 所需的 KQL SQL 支持有限

查询存储

查询存储功能提供有关查询计划选择和性能的见解。 它可帮助你快速找到查询计划更改所造成的性能差异,从而简化了性能疑难解答。

默认不为新的 Azure Synapse Analytics 数据库启用查询存储。 启用查询存储运行以下 T-SQL 命令:

ALTER DATABASE <database_name>
SET QUERY_STORE = ON;

例如:

ALTER DATABASE [SQLPOOL1]
SET QUERY_STORE = ON;

可以通过查找上次执行的查询、执行计数、运行时间最长的查询以及具有最大物理 I/O 潜在客户的查询来运行与任务相关的性能审核和故障排除。 有关示例查询,请参阅使用查询存储监视性能

优点:

  • 查询数据最多可存储 30 天。 默认为 7 天。
  • 可以在运行查询的同一工具中使用数据。

已知限制:

  • 历史查询数据的默认存储时间更短。
  • 与使用 DMV 相比,适用于 Azure Synapse 的查询存储中的分析场景有所限制。

DMV

动态管理视图 (DMV) 极其适合用于收集有关查询等待时间、执行计划和内存等信息。强烈建议标记感兴趣的查询,供日后对它进行跟踪。 例如:

-- Query with Label
SELECT *
FROM sys.tables
OPTION (LABEL = 'My Query');

有关在 Azure Synapse SQL 中标记查询的详细信息,请参阅在 Synapse SQL 中使用查询标记

有关使用 DMV 监视 Azure Synapse Analytics 工作负荷的详细信息,请参阅使用 DMV 监视专用 SQL 池工作负荷。 有关特定于 Azure Synapse Analytics 的目录视图文档,请参阅 Azure Synapse Analytics 目录视图

优点:

  • 可以在同一查询工具中使用数据。
  • DMV 提供了广泛的分析选项。

已知限制:

  • DMV 限制为 10,000 行历史条目。
  • 当池暂停/恢复时将重置视图。

Log Analytics

可以在 Azure 门户中轻松创建 Log Analytics 工作区。 有关如何将 Synapse 与 Log Analytics 连接的进一步说明,请参阅监视工作负荷 - Azure 门户

与 Azure 数据资源管理器一样,Log Analytics 使用 Kusto 查询语言 (KQL)。 有关 Kusto 语法的详细信息,请参阅 Kusto 查询概述

除了可配置的保留期外,还可以在 Log Analytics 中选择专用于查询的工作区。 Log Analytics 使你能够灵活地存储数据、运行并保存查询。

优点:

  • Azure Log Analytics 具有可自定义的日志保留策略

已知限制:

  • 使用 KQL 将添加到学习曲线。
  • 可以现成记录的视图有限。

Azure 数据资源管理器 (ADX)

Azure 数据资源管理器 (ADX) 是领先的数据探索服务。 此服务可用于分析 Azure Synapse Analytics 中的历史查询。 若要设置 Azure 数据工厂 (ADF) 管道来将日志复制并存储到 ADX,请参阅向/从 Azure 数据资源管理器复制数据。 在 ADX 中,可以运行高性能的 Kusto 查询来分析日志。 可以在其中合并其他策略,例如,通过 ADF 查询 DMV 输出并加载到 ADX。

优点:

  • ADX 提供可自定义的日志保留策略。
  • 针对大量数据执行高性能查询,尤其是涉及字符串搜索的查询。

已知限制:

  • 使用 KQL 将添加到学习曲线。

后续步骤