教程:适用于 Azure Database for MySQL 灵活服务器的 Query Performance Insight

适用于:Azure Database for MySQL - 灵活服务器

Query Performance Insight 提供建议,以便为数据库提供智能查询分析。 首选见解是工作负载模式和运行时间较长的查询。 了解这些见解有助于查找要优化的查询,从而提高整体性能并高效使用可用资源。

Query Performance Insight 旨在通过提供以下信息来帮助你减少排查数据库性能问题所花费的时间:

  • 前 N 个长时间运行的查询及其趋势。
  • 查询详细信息:查看包含最小、最大、平均和标准偏差查询时间的执行历史记录。
  • 资源利用率(CPU、内存和存储)。

本文讨论如何使用 Azure Database for MySQL 灵活服务器慢查询日志、Log Analytics 工具和工作簿模板来可视化适用于 Azure Database for MySQL 灵活服务器的 Query Performance Insight。

本教程介绍以下操作:

  • 使用 Azure 门户或 Azure CLI 配置慢查询日志
  • 设置诊断
  • 使用 Log Analytics 查看慢查询日志
  • 使用工作簿查看慢查询日志

先决条件

使用 Azure 门户配置慢查询日志

  1. 登录 Azure 门户

  2. 选择你的 Azure Database for MySQL 灵活服务器实例。

  3. 在左侧窗格的“设置”下,选择“服务器参数” 。

    显示“服务器参数”列表的屏幕截图。

  4. 对于 slow_query_log 参数,选择“启用” 。

    显示“slow_query_log”参数切换为“启用”的屏幕截图。

  5. 对于其他参数,如 long_query_time 和 log_slow_admin_statements,请参阅慢查询日志文档 。

    显示其余慢查询日志相关参数的更新值的屏幕截图。

  6. 选择“保存”。

    用于保存参数值更改的“保存”按钮的屏幕截图。

可以通过关闭“服务器参数”页返回到日志列表。

使用 Azure CLI 配置慢查询日志

或者,可以通过运行以下命令,从 Azure CLI 为 Azure Database for MySQL 灵活服务器实例启用和配置慢查询日志:

重要

为确保 Azure Database for MySQL 灵活服务器实例的性能不会受到严重影响,我们建议仅记录审核目的所需的事件类型和用户。

  • 启用慢查询日志。
az mysql flexible-server parameter set \
--name slow_query_log \
--resource-group myresourcegroup \
--server-name mydemoserver \
--value ON
  • 将 long_query_time 时间设置为 10 秒。 此设置将记录执行时间超过 10 秒的所有查询。 根据你对慢查询的定义调整此阈值。
az mysql server configuration set \
--name long_query_time \
--resource-group myresourcegroup \
--server mydemoserver \
--value 10

设置诊断

慢查询日志与 Azure Monitor 诊断设置集成后,你便可以通过管道将日志发送到以下任何数据接收器中:

  • Log Analytics 工作区
  • 事件中心
  • 一个存储帐户

注意

应在配置诊断设置之前创建数据接收器。 可以访问已配置的数据接收器中的慢查询日志。 最多需要等待 10 分钟的时间,这些日志就会出现。

  1. 在左窗格中的“监视”下,选择“诊断设置”。

  2. 在“诊断设置”窗格上,选择“添加诊断设置” 。

    “诊断设置”窗格上的“添加诊断设置”链接的屏幕截图。

  3. 在“名称”框中,为诊断设置输入一个名称。

  4. 通过选择相应的复选框,指定要将慢查询日志发送到的目标(Log Analytics 工作区、事件中心或存储帐户)。

    注意

    在本教程中,你将需要将慢查询日志发送到 Log Analytics 工作区。

  5. 在“日志”下,对于日志类型,选择“MySqlSlowLogs”复选框 。

    用于选择配置选项的“诊断设置”窗格的屏幕截图。

  6. 配置可以通过管道向其传送慢查询日志的数据接收器后,选择“保存”。

    “诊断设置配置”选项的屏幕截图,其中突出显示了“保存”。

使用 Log Analytics 查看查询见解

  1. 在 Log Analytics 的左侧窗格中,在“监视”下,选择“日志” 。

  2. 关闭打开的“查询”窗口。

    Log Analytics“查询”窗格的屏幕截图。

  3. 在查询窗口中,可写入要执行的查询。 为了查找特定服务器上超过 10 秒的查询,我们使用了以下代码:

    AzureDiagnostics
       | where Category == 'MySqlSlowLogs'
       | project TimeGenerated, LogicalServerName_s, event_class_s, start_time_t , query_time_d, sql_text_s 
       | where query_time_d > 10
    
  4. 选择“时间范围”,然后运行查询。 结果如下图所示:

    慢查询日志的屏幕截图。

使用工作簿查看查询见解

  1. 在 Azure 门户的左侧窗格中,在“监视”下,为 Azure Database for MySQL 灵活服务器实例选择“工作簿”。

  2. 选择“查询性能见解”模板。

    显示工作簿库中所有工作簿的屏幕截图。

在工作簿中,可以查看以下可视化效果:

  • 查询加载
  • 活动连接总数
  • 慢查询趋势(>10 秒查询时间)
  • 慢查询详细信息
  • 列出前 5 个最长查询
  • 按最小值、最大值、平均值和标准偏差查询时间汇总慢查询

两个长时间运行的查询的屏幕截图。

注意

  • 若要查询资源利用率,可以使用“概述”模板。
  • 还可以编辑这些模板,并根据要求对其进行自定义。 有关详细信息,请参阅 Azure 工作簿
  • 若想快速查看,还可将工作簿或 Log Analytics 查询固定到仪表板。 有关详细信息,请参阅在 Azure 门户中创建仪表板

Query Performance Insight 中有两个指标可以帮助找到潜在瓶颈:持续时间和执行计数 。 长时间运行的查询长时间锁定资源、阻止其他用户和限制可伸缩性的可能性最大。

在某些情况下,较高的执行计数可能会导致网络往返增加。 往返会影响性能。 它们受网络延迟和下游服务器延迟的影响。 因此,执行计数有助于查找频繁执行(“琐碎”)的查询。 这些查询是最需要优化的优化候选项。

后续步骤