在 Azure 门户中启用自动优化以监视查询并提高工作负载性能

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

Azure SQL 数据库是自动托管的数据服务,可持续监视查询并识别可为改善工作负载性能执行的操作。 可以查看建议并手动应用这些建议,或者让 Azure SQL 数据库自动应用纠正措施 - 这称为 自动优化模式

可通过以下方法在服务器或数据库级别启用自动优化:

备注

对于 Azure SQL 托管实例,支持的选项 FORCE_LAST_GOOD_PLAN 只能通过 T-SQL 进行配置。 本文中所述的基于 Azure 门户的配置和自动索引优化选项不适用于 Azure SQL 托管实例。

备注

目前不支持通过 ARM(Azure 资源管理器)模板配置自动优化选项。

在服务器上启用自动优化

在服务器级别上,可选择从“Azure 默认值”继承自动优化配置,或选择不继承配置。 Azure 默认设置为启用 FORCE_LAST_GOOD_PLAN,禁用 CREATE_INDEX 并禁用 DROP_INDEX。

重要

从 2020 年 3 月开始,用于自动优化的新 Azure 默认设置如下所示:

  • 启用 FORCE_LAST_GOOD_PLAN,禁用 CREATE_INDEX,禁用 DROP_INDEX。
  • 未配置自动优化首选项的现有服务器将自动配置为继承 Azure 默认设置。 这适用于当前有用于自动优化的服务器设置处于未定义状态的所有客户。
  • 创建的新服务器将自动配置为继承 Azure 默认设置(与之前创建新服务器时自动优化配置处于未定义状态时不同)。

Azure 门户

若要在 Azure SQL 数据库中的服务器上启用自动优化,请在 Azure 门户中导航到该服务器,然后在菜单中选择“自动优化”。

屏幕截图显示了 Azure 门户中的“自动优化”,你可以在其中对服务器应用选项。

备注

请注意,此时 DROP_INDEX 选项与使用分区切换和索引提示的应用程序不兼容,并且不应在这些情况下打开。 高级和业务关键服务层不支持删除未使用的索引。

选择想要启用的自动优化选项,然后选择“应用”。

服务器上的自动优化选项将应用到此服务器上的所有数据库。 默认情况下,所有数据库将从其父服务器继承配置,但可替代此配置并为每个数据库单独指定配置。

REST API

了解有关使用 REST API 在服务器上启用自动优化的详细信息,请参阅服务器自动优化 UPDATE 和 GET HTTP 方法

对单个数据库启用自动优化

Azure SQL 数据库支持为每个数据库单独指定自动优化配置。 在数据库级别中,可选择从“Azure 默认值”继承自动优化配置,或选择不继承配置。 Azure 默认设置为启用 FORCE_LAST_GOOD_PLAN,禁用 CREATE_INDEX 并禁用 DROP_INDEX。

提示

常规建议是在服务器级别管理自动优化配置,以便为每个数据库自动应用相同的配置设置。 仅在需要该数据库与其他从相同服务器继承设置的数据库有不同设置时,在单个数据库上配置自动优化。

Azure 门户

若要对单个数据库启用自动优化,请在 Azure 门户中导航到该数据库,然后选择“自动优化” 。

可以为每个数据库单独配置各自的自动优化设置。 可以手动配置单个自动优化选项,或指定选项从服务器继承其设置。

屏幕截图显示了 Azure 门户中的“自动优化”,你可以在其中对单一数据库应用选项。

请注意,此时 DROP_INDEX 选项与使用分区切换和索引提示的应用程序不兼容,并且不应在这些情况下启用。

选择所需配置后,单击“应用”。

REST API

了解有关使用 REST API 在单个数据库上启用自动优化的详细信息,请参阅 Azure SQL 数据库自动优化 UPDATE 和 GET HTTP 方法

T-SQL

要通过 T-SQL 在单个数据库上启用自动优化,请连接至数据库,并执行以下查询:

ALTER DATABASE current SET AUTOMATIC_TUNING = AUTO | INHERIT | CUSTOM

将自动优化设置为 AUTO 时,会应用 Azure 默认值。 将其设置为 INHERIT 时,会从父服务器继承自动优化配置。 选择 CUSTOM 时,需手动配置自动优化。

要通过 T-SQL 配置单个自动优化选项,请连接至数据库并执行如下所示的查询:

ALTER DATABASE current SET AUTOMATIC_TUNING (FORCE_LAST_GOOD_PLAN = ON, CREATE_INDEX = ON, DROP_INDEX = OFF)

将单个自动优化选项设置为 ON 时,数据库所继承的任何设置都将被替代,并会启用优化选项。 将其设置为 OFF 时,数据库所继承的任何设置亦将被替代,并会禁用优化选项。 自动优化选项(指定为 DEFAULT)将从服务器级别设置中继承自动优化配置。

重要

对于活动异地复制,只需在主数据库上配置自动优化。 自动应用的优化操作(例如索引创建或删除)将自动复制到只读辅助数据库。 尝试在只读辅助数据库上通过 T-SQL 启用自动优化将导致失败,因为不支持在只读辅助数据库上使用不同的优化配置。

了解有关用于配置自动优化的 T-SQL 选项的详细信息,请参阅 ALTER DATABASE SET 选项 (Transact-SQL)

疑难解答

自动建议管理已禁用

如果出现自动建议管理已禁用或只是由系统禁用的错误消息,最常见的原因如下:

  • 查询存储未启用或
  • 对于指定的数据库,查询存储处于只读模式,或
  • 查询存储停止运行,因为它使用了分配的存储空间。

可以考虑以下步骤来纠正此问题:

  • 清理查询存储,或使用 T-SQL 将数据保留期修改为“自动”。 请参阅如何为查询存储配置建议的保留和捕获策略
  • 使用 SQL Server Management Studio (SSMS),然后执行以下步骤:
    • 连接到 Azure SQL 数据库
    • 右键单击数据库
    • 转到“属性”,然后单击“查询存储”
    • 将操作模式更改为“读写”
    • 将存储捕获模式更改为“自动”
    • 将基于大小的清理模式更改为“自动”

权限

由于自动调整是 Azure 功能,因此若要使用它,需使用 Azure 的内置角色。 若要使用 Azure 门户中的功能,仅使用 SQL 身份验证还不够。

若要使用自动优化,必须为用户授予权限,最低必需权限是 Azure 的内置 SQL 数据库参与者角色。 也可考虑使用特权较高的角色,例如 SQL Server 参与者、SQL 托管实例参与者、参与者和所有者。

后续步骤

  • 请参阅自动优化文章,详细了解自动优化以及如何借助它来提高性能。
  • 请参阅性能建议,获取 Azure SQL 数据库性能建议的概述。
  • 请参阅查询性能见解,了解排名靠前的查询的性能影响。