你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在 Azure 门户中,通过自动优化监视查询并提高工作负载性能
适用于:Azure SQL 数据库
Azure SQL 托管实例
Azure SQL 数据库是自动托管的数据服务,可持续监视查询并识别可为改善工作负载性能执行的操作。 可以查看建议并手动应用建议,或者让 Azure SQL 数据库自动应用纠正措施。 这称为 自动优化模式。
可通过以下方法在服务器或数据库级别启用自动优化:
注意
对于 Azure SQL 托管实例,支持的选项 FORCE_LAST_GOOD_PLAN
只能通过 T-SQL进行配置。 本文中所述的基于 Azure 门户的配置和自动索引优化选项不适用于 Azure SQL 托管实例。
目前不支持通过 Azure 资源管理器(ARM)模板配置自动优化选项。
在服务器上启用自动优化
在服务器级别,可以选择从“Azure 默认值”继承自动优化配置,或者不继承配置。 Azure 默认值为 FORCE_LAST_GOOD_PLAN
启用、CREATE_INDEX
禁用和 DROP_INDEX
禁用。
Azure 门户
若要在 Azure SQL 数据库中的服务器上启用自动优化,请在 Azure 门户中导航到该服务器,然后在菜单中选择“自动优化”。
选择想要启用的自动优化选项,然后选择“应用”。
服务器上的自动优化选项将应用到此服务器上的所有数据库。 默认情况下,所有数据库将从其父服务器继承配置,但可替代此配置并为每个数据库单独指定配置。
REST API
了解有关使用 REST API 在服务器上启用自动优化的详细信息,请参阅服务器自动优化 UPDATE 和 GET HTTP 方法。
目前不支持通过 Azure 资源管理器(ARM)模板配置自动优化选项。
对单个数据库启用自动优化
Azure SQL 数据库支持为每个数据库单独指定自动优化配置。 在数据库级别中,可选择从“Azure 默认值”继承自动优化配置,或选择不继承配置。 这些默认值如下所示:
FORCE_LAST_GOOD_PLAN
已启用CREATE_INDEX
已禁用DROP_INDEX
已禁用
提示
常规建议是在服务器级别管理自动优化配置,以便为每个数据库自动应用相同的配置设置。 仅在需要该数据库与其他从相同服务器继承设置的数据库有不同设置时,在单个数据库上配置自动优化。
Azure 门户
若要对单个数据库启用自动优化,请在 Azure 门户中导航到该数据库,然后选择“自动优化” 。
可以为每个数据库单独配置各自的自动优化设置。 可以手动配置单个自动优化选项,或指定选项从服务器继承其设置。
选择所需配置后,选择“应用”。
REST API
了解有关使用 REST API 在单个数据库上启用自动优化的详细信息,请参阅 Azure SQL 数据库自动优化 UPDATE 和 GET HTTP 方法。
目前不支持通过 Azure 资源管理器(ARM)模板配置自动优化选项。
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 选项。
疑难解答
自动建议管理已禁用
如果看到自动化推荐管理被禁用或由系统禁用的错误消息,最常见的原因有:
- 未启用查询存储,或
- 对于指定的数据库,查询存储处于只读模式,或
- 查询存储停止运行,因为它用完了分配的存储空间。
可以考虑以下步骤来纠正此问题:
清理查询存储,或使用 T-SQL 将数据保留期修改为“自动”,或增加查询存储最大大小。 请参阅如何为查询存储配置建议的保留和捕获策略。
使用 SQL Server Management Studio (SSMS)并按照以下步骤操作:
- 连接到 Azure SQL 数据库。
- 右键单击数据库。
- 转到“属性”,然后选择“查询存储”。
- 将“操作模式”更改为“读写”。
- 将“存储捕获模式”更改为“自动”。
- 将“基于大小的清理模式”更改为“自动”。
权限
对于 Azure SQL 数据库,在 Azure 门户中管理自动优化或使用 PowerShell 或 REST API 需要内置的 Azure 基于角色的访问控制 (RBAC) 角色的成员身份。
若要管理自动优化,必须为用户授予的最低权限是 SQL 数据库参与者角色的成员身份。 也可考虑使用特权较高的角色,例如 SQL Server 参与者、参与者和所有者。
有关使用 T-SQL 管理自动优化所需的权限,请参阅 ALTER DATABASE
的权限。
配置自动优化电子邮件通知
若要接收有关自动优化建议的自动电子邮件通知,请参阅自动优化电子邮件通知指南。