Azure Database for MySQL 中的 Query Performance Insight

适用于: Azure Database for MySQL 单一服务器

重要

Azure Database for MySQL 单一服务器即将停用。 强烈建议升级到 Azure Database for MySQL 灵活服务器。 有关如何迁移到 Azure Database for MySQL 灵活服务器的详细信息,请参阅 Azure Database for MySQL 单一服务器发生了什么情况?

适用于: Azure Database for MySQL 5.7、8.0

Query Performance Insight 可帮助你快速确定运行时间最长的查询、它们如何随时间的推移而变化,以及哪些等待因素会影响它们。

常见方案

长时间运行的查询

  • 标识过去 X 小时内运行时间最长的查询
  • 标识正在等待资源的前 N 个查询

等待统计信息

  • 了解查询的等待性质
  • 了解资源等待的趋势以及存在资源争用的位置

先决条件

若要运行 Query Performance Insight,数据必须存在于查询存储中。

查看性能见解

Azure 门户中的 Query Performance Insight 视图将显示来自查询存储的关键信息的可视化效果。

在 Azure Database for MySQL 服务器的门户页中,选择菜单栏的“智能性能”部分下的“Query Performance Insight”。

长时间运行的查询

“长时间运行的查询”选项卡按每次执行平均持续时间显示前 5 个查询,每隔 15 分钟聚合一次。 可以通过从“查询数量”下拉列表中进行选择来查看更多查询。 执行此操作时,特定查询 ID 的图表颜色可能会更改。

注意

不再支持显示查询文本并将显示为空。 删除查询文本是为了避免对查询文本或基础架构未经授权的访问,因为这可能会带来安全风险。

下面分享查看查询文本的建议步骤:

  1. 从 Azure 门户中的 Query Performance Insight 边栏选项卡中确定热门查询的 query_id。
  2. 从 MySQL Workbench 或 mysql.exe 客户端或首选查询工具登录到 Azure Database for MySQL 服务器并执行以下查询。
    SELECT * FROM mysql.query_store where query_id = '<insert query id from Query performance insight blade in Azure portal';  // for queries in Query Store
    SELECT * FROM mysql.query_store_wait_stats where query_id = '<insert query id from Query performance insight blade in Azure portal';  // for wait statistics

可以在图表中单击并拖动以缩小到特定的时间窗口。 或者,使用“放大”和“缩小”图标分别查看更小或更大的时间段。

等待统计信息

注意

等待统计信息用于排查查询性能问题。 建议仅在进行故障排除时启用。
如果在查看等待统计信息时在 Azure 门户中收到错误消息“Microsoft.DBforMySQL 遇到问题;无法满足该请求。如果此问题仍然存在或意外出现,请与支持部门联系并提供此信息。”,请使用较短的时间段。

“等待统计信息”提供特定查询的执行期间发生的等待事件的视图。 若要详细了解等待事件类型,请参阅 MySQL 引擎文档

选择“等待统计信息”选项卡以查看服务器中等待次数的相应可视化效果。

“等待统计信息”视图中显示的查询按指定时间间隔内显示最大等待时间的查询进行分组。

注意

不再支持显示查询文本并将显示为空。 删除查询文本是为了避免对查询文本或基础架构未经授权的访问,因为这可能会带来安全风险。

下面分享查看查询文本的建议步骤:

  1. 从 Azure 门户中的 Query Performance Insight 边栏选项卡中确定热门查询的 query_id。
  2. 从 MySQL Workbench 或 mysql.exe 客户端或首选查询工具登录到 Azure Database for MySQL 服务器并执行以下查询。
    SELECT * FROM mysql.query_store where query_id = '<insert query id from Query performance insight blade in Azure portal';  // for queries in Query Store
    SELECT * FROM mysql.query_store_wait_stats where query_id = '<insert query id from Query performance insight blade in Azure portal';  // for wait statistics

后续步骤

  • 详细了解如何在 Azure Database for MySQL 中进行监视和优化