Query Performance Insight 为 Azure Database for PostgreSQL 灵活服务器实例中的数据库提供智能查询分析。 它有助于确定工作负荷中资源消耗最多且运行时间最长的查询。 这可帮助你找到要优化的查询,以提高整体工作负荷性能并有效使用要支付的资源。 Query Performance Insight 通过提供以下功能,帮助减少排查数据库性能问题所花费的时间:
- 确定长时间运行的查询以及它们随时间的变化。
- 确定影响这些查询的等待类型。
- 有关按调用次数(执行计数)、数据使用、IOPS 和临时文件使用情况的关键数据库查询的详细信息(这些可能是潜在的性能优化调优候选项)。
- 向下钻取查询的详细信息、查看查询 ID 和资源利用率历史记录的能力。
- 深入洞察数据库整体资源消耗。
先决条件
注意
当前查询存储已禁用。 Query Performance Insight 取决于查询存储数据。 需要通过将动态服务器参数 pg_qs.query_capture_mode 设置为 ALL 或 TOP 来启用它。
注意
              查询存储库等待采样当前已禁用。 Query Performance Insight 取决于查询存储等待采样数据。 需要通过将动态服务器参数 pgms_wait_sampling.query_capture_mode 设置为 ALL 来启用它。
- Log Analytics 工作区 配置为存储 3 个日志类别:Azure Database for PostgreSQL 灵活服务器实例会话日志、Azure Database for PostgreSQL 灵活服务器实例查询存储和运行时,以及 Azure Database for PostgreSQL 灵活服务器实例查询存储等待统计信息。 若要配置 Log Analytics,请参阅 Log Analytics 工作区。
注意
查询存储数据不会传输到 Log Analytics 工作区。 日志(会话数据/查询存储运行数据/查询存储等待统计信息)未发送到 Log Analytics 工作区,而这是使用 Query Performance Insight 所必需的。 若要为 Azure Database for PostgreSQL 灵活服务器实例配置诊断设置并将数据发送到 Log Analytics 工作区,请参阅 在 Azure Database for PostgreSQL 中配置和访问日志。
权限
需要为 Azure 数据库的 PostgreSQL 灵活服务器分配以下 Azure 基于角色的访问控制(Azure RBAC) 权限,以便可以使用查询性能分析工具:
- Microsoft.DBforPostgreSQL/flexibleServers/configurations/read(读取)
- Microsoft.DBforPostgreSQL/flexibleServers/providers/Microsoft.Insights/diagnosticSettings/read
- Microsoft.DBforPostgreSQL/flexibleServers/read
- Microsoft.Insights/Components/read
- Microsoft.Insights/DiagnosticSettings/read
- Microsoft.Insights/DiagnosticSettingsCategories/read
- Microsoft.Insights/Logs/AzureDiagnostics/read
- Microsoft.Insights/Logs/read
使用 Query Performance Insight
Azure 门户中的 Query Performance Insight 视图显示查询存储中的关键信息的可视化效果。 Query Performance Insight 很容易使用:
- 打开 Azure 门户,找到要检查的 Azure Database for PostgreSQL 灵活服务器实例。 
- 从左侧菜单中打开智能性能>。 
- 选择用于调查查询的时间范围。 
- 在第一个选项卡上,查看“长时间运行的查询”列表。 
- 使用滑块或缩放功能更改观察间隔。   
- (可选)可以选择“自定义”以指定时间范围。 
注意
若要使 Azure Database for PostgreSQL 灵活服务器实例在 Query Performance Insight 中呈现信息, 查询存储需要捕获几个小时的数据。 如果在某段时间内数据库不活动或查询存储不活动,则 Query Performance Insight 在显示该时间范围时,图表将是空的。 如果查询存储未运行,随时可以启用它。 有关详细信息,请参阅有关查询存储的最佳做法。
- 若要查看特定查询的详细信息,请单击 - QueryId Snapshot下拉列表。  
- 若要获取特定查询的查询文本,请连接到服务器上的 - azure_sys数据库并使用- query_store.query_texts_view查询- QueryId。  
- 在“连续”选项卡上,可以找到其他查询见解,包括: - 等待统计信息
- 主要查询(按调用数)
- 主要查询(按数据使用量)
- 主要查询(按 IOPS)
- 按临时文件划分的排名靠前的查询
 
注意事项
- Query Performance Insight 不可用于只读副本。
- 若要运行 Query Performance Insight,数据必须存在于查询存储中。 查询存储是一项选择加入功能,因此默认情况下它未在服务器上启用。 对于给定服务器上的所有数据库,查询存储处于全局启用或禁用状态,且无法针对每个数据库打开或关闭查询存储。
- 在可突发定价层上启用查询存储可能会对性能产生负面影响;因此,不建议对该层启用查询存储。