Azure SQL 数据库与 Azure SQL 托管实例中的监视和性能优化

适用于:Azure SQL 数据库Azure SQL 托管实例

若要监视 Azure SQL 数据库和 Azure SQL 托管实例中某个数据库的性能,首先需要监视工作负荷使用的、相对于在选择特定服务层和性能级别所选的数据库性能级别的 CPU 和 IO 资源。 为了帮助实现此目的,Azure SQL 数据库和 Azure SQL 托管实例会发出资源指标,你可以在 Azure 门户中或使用以下 SQL Server 管理工具之一查看这些指标:

监视解决方案 SQL 数据库 SQL 托管实例 需要客户拥有的 VM 上的代理
指标和警报
Query Performance Insight
使用 DMV 进行监视
使用查询存储进行监视

Azure 门户中的数据库顾问

Azure SQL 数据库提供多个数据库顾问来提供智能性能优化建议以及用于提高性能的自动优化选项。

此外,Query Performance Insight 页面会显示有关针对单一数据库和共用数据库运行的、CPU 和 IO 占用量最高的查询的详细信息。

  • 在 Azure 门户中,Azure SQL 数据库“概览”窗格中的“智能性能”下提供 Query Performance Insight。 使用自动收集的信息标识查询,然后开始优化工作负载性能。
  • 还可以配置自动优化以自动实现这些建议,例如强制实施查询执行计划以防止回归,或基于工作负载模式创建和删除非聚集索引。 在 Azure 门户中,Azure SQL 数据库“概览”窗格中的“智能性能”下还提供“自动优化”。

Azure SQL 数据库和 Azure SQL 托管实例提供基于人工智能的其他监视和优化功能,以帮助排查数据库和解决方案的性能问题并实现其最高性能。 可以选择将智能见解以及其他数据库资源日志与指标配置为流式导出到多个目标之一,使其可供使用和分析。

除了 Azure 门户之外,数据库引擎具有自己的监视和诊断功能,Azure SQL 数据库和 SQL 托管实例可以使用这些功能,例如查询存储动态管理视图 (DMV)。 有关用于监视 Azure SQL 数据库和 Azure SQL 托管实例中的各种性能问题的脚本,请参阅使用 DMV 进行监视

在 Azure 门户中监视和优化 Azure SQL

在 Azure 门户中,Azure SQL 数据库和 Azure SQL 托管实例提供对资源指标的监视。 Azure SQL 数据库提供数据库顾问,而 Query Performance Insight 提供查询优化建和查询性能分析。 在 Azure 门户中,可为逻辑 SQL 服务器及其单一数据库和共用数据库启用自动优化。

注意

使用率极低的数据库在门户中显示的使用情况可能低于实际使用情况。 由于在将双精度值转换为最接近的整数时发出遥测的方式,某些小于 0.5 的使用量将舍入为 0,这会导致发出的遥测的精度降低。 有关详细信息,请参阅数据库和弹性池低指标舍入为零

Azure SQL 数据库和 Azure SQL 托管实例资源监视

可以在 Azure 门户上的“指标”视图中快速监视各种资源指标。 可通过这些指标查看数据库是否接近 CPU、内存、IO 或存储资源的限制。 高 DTU、CPU 或 IO 利用率可能表明工作负载需要更多资源。 它还可能指示查询需要优化。 若要了解 Azure SQL 数据库和 Azure SQL 托管实例中支持的指标,请参阅 Microsoft.Sql/servers/databasesMicrosoft.Sql/servers/elasticPoolsMicrosoft.Sql/managedInstances

A screenshot from the Azure portal of resource metrics for a SQL database.

有关 Azure SQL 数据库中的一组建议的警报规则,请参阅使用 Azure Monitor 指标和警报监视 Azure SQL 数据库

注意

Azure 门户中的存储相关指标(例如“已使用的数据空间”)以二进制值报告,但使用的是十进制单位。 例如,1 MB 的存储空间是指 1,048,576 字节,而不是 1,000,000 字节。 对于二进制值,使用的新单位是 KiB、MiB、GiB 等。但为了与数据库引擎中以前建立的使用情况数据保持兼容性和一致性,Azure SQL 存储指标使用旧单位,例如 KB、MB、GB 等。

Azure SQL 数据库中的数据库顾问

Azure SQL 数据库包含针对单一数据库和共用数据库提供性能优化建议的数据库顾问。 这些建议会在 Azure 门户中提供,也可以使用 PowerShell 来查看。 还可以启用自动优化,使 Azure SQL 数据库能够自动实施这些优化建议。

Azure SQL 数据库中的 Query Performance Insight

Query Performance Insight 在 Azure 门户中显示针对单一数据库和共用数据库运行的、资源消耗量最高且运行时间最长的查询的性能。

数据库和弹性池低指标舍入为零

从 2020 年 9 月开始,使用率极低的数据库在门户中显示的使用情况可能低于实际使用情况。 由于在将双精度值转换为最接近的整数时发出遥测的方式,某些小于 0.5 的使用量将舍入为 0,这会导致发出的遥测的精度降低。

例如:假设一个 1 分钟时段,其中包含以下 4 个数据点:0.1、0.1、0.1、0.1,这些低值向下舍入为 0、0、0、0,并显示平均值为 0。 如果其中有数据点大于 0.5,例如:0.1、0.1、0.9、0.1,它们舍入为 0、0、1、0,并显示平均值为 0.25。

生成性能问题的智能评估

Azure SQL 数据库的智能见解和 Azure SQL 托管实例使用内置智能通过人工智能持续监视数据库使用情况,并检测导致性能不佳的干扰性事件。 Intelligent Insights 可根据查询执行等待时间、错误或超时自动检测数据库的性能问题。 检测到后,智能见解将执行详细分析,生成名为 SQLInsights 的资源日志(与 Azure Monitor SQL 见解 [预览版] 无关)。 SQLInsights 是对问题的智能评估。 此评估包含对数据库性能问题的根本原因分析,以及为性能改进而提供的可行性建议。

Intelligent Insights 是 Azure 内置智能的一项独特功能,提供以下功能价值:

  • 主动监视
  • 定制的性能见解
  • 数据库性能下降的早期检测
  • 已检测出问题的根本原因分析
  • 性能改进建议
  • 数以十万计的数据库上的横向扩展功能
  • 对 DevOps 资源和总拥有成本的积极影响

启用指标和资源日志的流式导出

可以启用并配置将诊断遥测数据(包括智能见解资源日志)流式导出到多个目标之一。

可以配置诊断设置,以将单一数据库、共用数据库、弹性池、托管实例和实例数据库的指标和资源日志类别流式传输到以下 Azure 资源之一。

Azure Monitor 中的 Log Analytics 工作区

可将指标和资源日志流式传输到 Azure Monitor 中的 Log Analytics 工作区

Azure 事件中心

可将指标和资源日志流式传输到 Azure 事件中心。 将诊断遥测数据流式传输到事件中心以提供以下功能:

  • 将日志流式传输到第三方日志记录和遥测系统

    将所有指标和资源日志流式传输到单个事件中心,以通过管道将日志数据传送到第三方 SIEM 或日志分析工具。

  • 生成自定义遥测和日志记录平台

    可利用事件中心高度可缩放的发布-订阅功能,灵活地将指标和资源日志引入到自定义遥测平台。 有关详细信息,请参阅 Azure 事件中心

Azure 存储

将指标和资源日志流式传输到 Azure 存储。 使用 Azure 存储存档大量诊断遥测数据,并且成本只是前两种流式传输选项的一小部分。

使用扩展事件

此外,还可以使用扩展事件在 SQL Server、Azure SQL 数据库和 Azure SQL 托管实例中进行高级监视和故障排除。 扩展事件是一种优于 SQL 跟踪的“跟踪”工具和事件体系结构,支持用户收集尽可能多或尽可能少的数据来排查或查明性能问题,同时缓解对正在运行的应用程序的性能所产生的影响。 扩展事件将替代弃用的 SQL 跟踪和 SQL Server Profiler 功能。 有关使用 Azure SQL 数据库中的扩展事件的信息,请参阅 Azure SQL 数据库中的扩展事件。 在 Azure SQL 数据库和 SQL 托管实例中,使用托管在 Azure Blob 存储中的事件文件目标