Azure SQL 数据库与 Azure SQL 托管实例中的自动优化
适用于: Azure SQL 数据库 Azure SQL 托管实例
通过基于人工智能和机器学习的持续性能优化,Azure SQL 数据库和 Azure SQL 托管实例自动优化可以提供最佳性能和稳定的工作负载。
自动优化是一项完全托管的智能性能服务,它使用内置的智能来持续监视在数据库上执行的查询,并自动提高其性能。 这是通过动态调整数据库以适应不断变化的工作负载并应用优化建议来实现的。 自动优化通过人工智能从 Azure 上的所有数据库进行横向学习,并动态地提高其优化操作。 在开启自动优化时,数据库运行时间越长,执行能力就越好。
Azure SQL 数据库和 Azure SQL 托管实例自动优化可能是可用于提供稳定的最佳性能数据库工作负载的最有影响力的功能之一。
Azure SQL 自动优化与数据库引擎中的 SQL Server 自动优化功能共享其核心逻辑。 有关内置智能机制的其他技术信息,请参阅 SQL Server 自动优化。
自动优化有何作用
- 数据库的自动性能优化
- 性能优化的自动验证
- 自动回退和自我更正
- 优化历史记录
- 优化用于手动部署的 Transact-SQL (T-SQL) 脚本
- 数以十万计的数据库上的横向扩展功能
- 对 DevOps 资源和总拥有成本的积极影响
安全、可靠且久经考验
应用到数据库的优化操作非常安全,可满足最紧张工作负载的性能需求。 系统精心设计,旨在不干扰用户工作负载。 仅在 CPU、数据 IO 和日志 IO 利用率较低的情况下才应用自动优化建议。 系统还可暂时禁用自动优化操作以保护工作负载性能。 在此情况下,Azure 门户和 sys.database_automatic_tuning_options DMV 中会显示“系统禁用”消息。 自动优化旨在为用户工作负载提供最高资源优先级。
自动优化机制非常成熟,已经在 Azure 上运行的数百个数据库中进行了完善。 应用的自动优化操作将会自动验证,确保工作负载性能得到显著的正面改善。 如果性能没有得到改善,或者出现不太可能出现的性能回归现象,则会立即还原自动优化所做的更改。 通过所记录的优化历史记录,可清楚地跟踪对 Azure SQL 数据库中的每个数据库所做的优化改进。
启用自动优化
- Azure SQL 数据库:在 Azure 门户中启用自动优化或使用 ALTER DATABASE T-SQL 语句。
- Azure SQL 托管实例:使用 ALTER DATABASE T-SQL 语句启用自动优化。
自动优化选项
Azure SQL 数据库和 Azure SQL 托管实例中可用的自动优化选项包括:
自动优化选项 | 说明 | 单一数据库和共用数据库支持 | 实例数据库支持 |
---|---|---|---|
CREATE INDEX | 标识可提高工作负载性能的索引,创建索引,并自动验证查询性能是否有所提高。 建议使用新索引时,系统会考虑数据库中的可用空间。 如果估计添加索引会将空间利用率提高到 90% 以上,达到最大数据大小,则不会生成索引建议。 系统确定利用率较低的时间段并开始创建索引后,即使资源利用率意外增加,也不会暂停或取消该操作。 如果索引创建失败,则会在将来的低利用率期间重试索引创建操作。 对于聚集索引或堆大于 10 GB 的表,不提供索引建议。 | 是 | 否 |
DROP INDEX | 删除过去 90 天内未使用的索引和重复的索引。 唯一索引(包括支持主键和唯一约束的索引)永远不会被删除。 当工作负荷中存在带索引提示的查询时,或者当工作负荷执行分区切换时,此选项可能会被自动禁用。 在“高级”和“业务关键”服务层上,此选项永远不会删除未使用的索引,但会删除重复的索引(如果有)。 | 是 | 否 |
FORCE LAST GOOD PLAN(自动计划更正) | 标识使用执行计划的 Azure SQL 查询(该执行计划的速度慢于上一良好计划),并强制查询使用上一个已知良好的计划而不是回归计划。 | 是 | 是 |
SQL 数据库的自动优化
Azure SQL 数据库的自动优化使用CREATE INDEX、DROP INDEX 和 FORCE_LAST_GOOD_PLAN 数据库顾问建议来优化数据库性能。 有关详细信息,请参阅 Azure 门户中的、PowerShell 中的和 REST API 中的数据库顾问建议。
可以使用 Azure 门户手动应用优化建议,也可以让自动优化自主为你应用优化建议。 让系统自主为你应用优化建议的好处是,它会自动验证对工作负载性能是否有正向提升,如果检测不到显著的性能改进,或者性能出现回归,则系统会自动还原已做的更改。 根据查询执行频率,验证过程可能需要 30 分钟到 72 小时,执行频率较低的查询所需的时间会更长。 如果在验证过程中的任何时间点检测到回归现象,则会立即还原所做的更改。
重要
如果通过 T-SQL 应用优化建议,则自动性能验证和反转机制不可用。 以这种方式应用的建议将保持活动状态并显示在优化建议列表中 24-48 小时,然后系统会自动撤销这些建议。 如果你想要更快地删除建议,可以通过 Azure 门户放弃它。
可以为每个数据库独立启用或禁用自动优化选项,也可以在服务器级别配置这些选项,并将其应用于从服务器继承设置的每个数据库。 默认情况下,新服务器会继承 Azure 默认值,用于自动优化设置。 Azure 默认值设置为启用 FORCE_LAST_GOOD_PLAN,禁用 CREATE_INDEX,以及禁用 DROP_INDEX。
若要配置自动优化,建议在服务器上配置自动优化选项并继承属于父级服务器的数据库设置。 它会简化对大量数据库的自动优化选项的管理。
Azure SQL 托管实例的自动优化
SQL 托管实例的自动优化仅支持“强制执行上一个卓越计划”。 有关通过 T-SQL 配置自动优化选项的详细信息,请参阅自动优化引入了自动计划更正和自动计划更正。
自动优化历史记录
对于 Azure SQL 数据库,自动优化所做的更改的历史记录保留 21 天。 可以在 Azure 门户中的数据库“性能建议”页上查看它,也可以通过将 PowerShell 与 Get-AzSqlDatabaseRecommendedAction cmdlet 配合使用来查看它。 为延长保留期,还可以通过启用“AutomaticTuning”诊断设置,将历史记录数据流式传输到多个类型的目标。
后续步骤
- 阅读博客文章人工智能优化 Azure SQL 数据库。
- 参阅在 Azure SQL 数据库中自动索引数百万个数据库,以了解自动优化的工作原理。
- 了解自动优化如何主动帮助诊断和排查 Azure SQL 数据库上的高 CPU 问题