加速和优化性能

已完成

了解用于为 Azure SQL 加速和优化性能的选项是进一步提供一致性能的关键。 这包括了解如何缩放 CPU 容量、提高 I/O 性能、配置内存和工作进程、缩短应用程序延迟以及应用 SQL Server 优化的标准最佳做法。

缩放 CPU 容量

可能需要缩放 CPU 数来满足资源需求。 对于本地环境,这需要重新配置 VM、更改硬件,甚至是迁移数据库。 Azure SQL 使你可以在无需迁移的情况下执行此操作。 可使用门户、T-SQL、Azure CLI 或 REST API 为你的部署横向或纵向扩展 vCore 数。

通常必须停机,但这对于没有迁移的 Azure SQL 数据库来说可能非常快。 通过超大规模部署,无论数据大小如何,都可在恒定时间内纵向扩展;通过无服务器部署,可基于 CPU 需求进行自动缩放。

注意

Azure SQL 托管实例缩放可能需要大量时间,但不需要进行任何迁移。

I/O 性能

I/o 性能对数据库应用程序至关重要。 Azure SQL 让你不用实际放置文件,不过有很多方法来确保你获得所需的 I/O 性能。

每秒输入/输出 (IOPS) 可能对应用程序来说十分重要。 请确保已选择正确的服务层级和 vCore 来满足 IOPS 需求。 如果要迁移到 Azure,请了解在本地如何针对查询度量 IOPS。 如果对 IOPS 有限制,则可能会遇到长时间的 I/O 等待。 在 vCore 购买模型中,如果没有足够的 IOPS,可以纵向扩展 vCore 或是迁移到业务关键或超大规模。 对于生产工作负载,在使用 DTU 时,我们建议迁移到高级层。

I/O 延迟是 I/O 性能的另一个关键组成部分。 若要缩短 Azure SQL 数据库的 I/O 延迟,请考虑业务关键或超大规模。 若要缩短 SQL 托管实例的 I/O 延迟,请迁移到业务关键层,或者增加数据库的文件大小或数量。 改善事务日志延迟可能需要使用多语句事务。

增加内存或工作线程

具有足够的内存或工作进程对应用程序和部署来说可能非常重要。 对于 Azure SQL 数据库,可纵向扩展 vCore 以实现更高的内存限制或工作线程。 对于 SQL 托管实例,可纵向扩展 vCore 来调高内存限制。 目前,SQL 托管实例还支持使用“最大工作线程数”来增加工作进程。

改善应用程序延迟

即使针对所有资源需求配置了部署,应用程序也可能引入延迟性能问题。 请务必遵循 Azure SQL 应用程序的以下最佳做法:

  • 使用重定向连接类型而不是代理。
  • 使用存储过程或是通过批处理等方法限制查询往返次数,从而优化“繁琐”的应用程序。
  • 通过对事务进行分组来优化事务,而不是采用单一实例事务。

如同 SQL Server 一样进行优化

Azure SQL 仍然是 SQL Server。 请确保优化 SQL Server 查询并了解以下内容,这几乎无可替代:

  • 正确的索引设计
  • 使用批处理
  • 使用存储过程
  • 通过将查询参数化,避免缓存的即席查询太多
  • 快速正确地在应用程序中处理结果

在下一个练习中,你将解决第一个练习中的性能问题,并通过缩放 Azure SQL 的 CPU 来改进它。