VM 大小:Azure VM 上 SQL Server 的性能最佳做法
本文针对 VM 大小提供一系列最佳做法和准则,以优化 Azure 虚拟机 (VM) 上 SQL Server 的性能。
通常需要在针对成本优化和针对性能优化之间进行权衡。 这一系列性能最佳做法侧重于实现 Azure 虚拟机上 SQL Server 的最佳性能。 如果工作负荷要求较低,可能不需要每项建议的优化。 评估这些建议时应考虑性能需求、成本和工作负荷模式。
如需了解更全面的详情,请参阅本系列中的其他文章:清单、存储、安全性、HADR 配置和收集基线。
清单
请查看以下清单,以大致了解本文其余部分详细介绍的 VM 大小最佳做法:
- 新的 Ebdsv5 系列在 Azure 中使 I/O 吞吐量与 vCore 的比率达到最高,内存与 vCore 的比率达到 8。 此系列为 Azure VM 上的 SQL Server 工作负载提供最佳性能。 对于大多数 SQL Server 工作负载,请首先考虑此系列。
- 将 VM 大小与 4 个或多个 vCPU(如 E4ds_v5 或更高版本)一起使用。
- 使用内存优化的虚拟机大小,以实现 SQL Server 工作负载的最佳性能。
- Edsv5 系列,以及 M- 和 Mv2- 系列提供 OLTP 工作负载所需的最佳内存与 vCore 比率。
- M 系列 VM 提供 Azure 中最高的内存与 vCore 比率。 考虑将这些 VM 用于任务关键型和数据仓库工作负载。
- 使用 Azure 市场映像来部署 SQL Server 虚拟机,配置 SQL Server 设置和存储选项以获得最佳性能。
- 收集目标工作负载的性能特征,并使用它们来确定适用于你的业务的 VM 大小。
- 使用数据迁移助手和 SKU 建议工具为现有 SQL Server 工作负载查找正确的 VM 大小。
若要将 VM 大小清单与其他清单进行比较,请参阅全面的性能最佳做法清单。
概述
在 Azure VM 上创建 SQL Server 时,请仔细考虑所需工作负载的类型。 如果要迁移现有环境,请收集性能基线,以确定 SQL Server 对 Azure VM 的要求。 如果为新 VM,请根据供应商要求创建新的 SQL Server VM。
如果要使用为云生成的新应用程序创建新的 SQL Server VM,则随着数据和使用情况要求的变化,你可以轻松地调整 SQL Server VM 的大小。 使用较低层 D 系列、B 系列或 Av2 系列开始开发环境,并随着时间的推移扩展你的环境。
将 SQL Server VM 市场映像与门户中的存储配置结合使用。 这样便可更轻松地正确创建具有工作负载所需的大小、IOPS 和吞吐量的存储池。 必须选择支持高级存储和高级存储缓存的 SQL Server VM。 有关详细信息,请参阅存储一文。
目前,Ebdsv5 系列使 Azure 中可用的 I/O 吞吐量与 vCore 的比率达到最高。 如果不知道 SQL Server 工作负载的 I/O 要求,此系列最有可能满足你的需求。 有关详细信息,请参阅存储一文。 SQL Server 数据仓库和任务关键型环境通常需要缩放到内存与 vCore 比率大于 8。 对于中等环境,你可能希望选择内存与 vCore 比率为 16,而对于较大的数据仓库环境,则可能希望该比率为 32。
SQL Server 数据仓库环境通常受益于大型计算机的并行处理。 因此,对于大型数据仓库环境,强烈建议选择 M 系列和 Mv2 系列。
使用源计算机的 vCPU 和内存配置作为将当前本地 SQL Server 数据库迁移到 Azure VM 上的 SQL Server 的基线。 如果你有软件保障,请利用 Azure 混合权益将你的许可证带到 Azure,并节省 SQL Server 许可成本。
内存优化
内存优化的虚拟机大小是 SQL Server VM 的主要目标,也是 Azure 推荐的选择。 内存优化的虚拟机提供更大的内存与 CPU 比率和大中型缓存选项。
Ebdsv5 系列
Ebdsv5 系列是一个新的内存优化 VM 系列,提供 Azure 中可用的最高远程存储吞吐量。 这些 VM 的内存与 vCore 的比率为 8,再加上较高的 I/O 吞吐量,从而成为 SQL Server 工作负载的理想选择。 Ebdsv5 系列 VM 为在 Azure 虚拟机上运行的 SQL Server 工作负载提供最佳性价比,我们强烈建议将其用于大多数生产 SQL Server 工作负载。
Edsv5 系列
Edsv5 系列专为内存密集型应用程序而设计,非常适合不需要像 Ebdsv5 系列那样的高 I/O 吞吐量的 SQL Server 工作负载。 这些 VM 具有大型本地存储 SSD 容量、高达 672 GiB 的 RAM,以及非常高的本地和远程存储吞吐量。 在大多数这些虚拟机中,每个 vCore 几乎一致具有 8 GiB 内存,非常适合大多数 SQL Server 工作负载。
此组中最大的虚拟机是提供 104 个 vCore 和 672 GiB 内存的 Standard_E104ids_v5 虚拟机。 此虚拟机很引人注目,因为它孤立存在,这意味着它肯定是主机上运行的唯一虚拟机,因此独立于其他客户工作负载。 该虚拟机的内存与 vCore 比率低于 SQL Server 的建议比率,因此仅当需要隔离时才会使用。
M 和 Mv2 系列
M 系列 为某些最大的 SQL Server 工作负载提供较高的 vCore 数量和内存。
Mv2 系列具有最高的 vCore 计数和内存,建议用于任务关键型工作负载和数据仓库工作负载。 Mv2 系列实例具有内存优化的 VM 大小,提供卓越的计算性能以支持大型内存中数据库和工作负载,其内存与 CPU 比率高,非常适用于关系数据库服务器、大型缓存和内存中分析。
M 和 Mv2 系列的高级存储和高级存储缓存支持、超磁盘支持以及写入加速等功能可提升 SQL Server 的性能。
常规用途
常规用途虚拟机大小旨在为较小的入门级工作负载(如开发和测试、Web 服务器和较小的数据库服务器)提供均衡的内存与 vCore 比率。
由于常规用途虚拟机的内存与 vCore 比率较小,因此必须仔细监视基于内存的性能计数器,以确保 SQL Server 能够获取所需的缓冲区缓存内存。 有关详细信息,请参阅内存性能基线。
由于对于生产工作负载,建议的最低内存与 vCore 比率为 8,因此对于运行 SQL Server 的常规用途 VM,建议的最低配置为 4 个 vCPU 和 32 GiB 内存。
Ddsv5 系列
Ddsv5 系列的 vCPU、内存和临时磁盘数量相当,但支持的内存与 vCore 比率较小。
Ddsv5 VM 的延迟更低、本地存储速度更高。
这些虚拟机非常适合需要快速访问临时存储和部门关系数据库的并行 SQL 和应用部署。 本系列的所有虚拟机的标准内存与 vCore 比率均为 4。
因此,建议使用 D8ds_v5 作为本系列中的入门虚拟机,它具有 8 个 vCore 和 32 GiB 内存。 该系列中最大的虚拟机是 D96ds_v5,它拥有 96 个 vCore 和 256 GiB 的内存。
注意
Ddsv5 系列的内存与 vCore 比率并非针对 SQL Server 工作负载建议的 8。 因此,请仅考虑将这些虚拟机用于较小的应用程序和开发工作负载。
B 系列
可突发 B 系列虚拟机大小非常适合不需要一致性能的工作负载,如概念验证以及非常小的应用程序和开发服务器。
大多数可突发 B 系列虚拟机大小的内存与 vCore 比率为 4。 其中最大的虚拟机为 Standard_B20ms,它具有 20 个 vCore 和 80 GiB 内存。
该系列是独一无二的,因为应用能够在营业时间突发,并且可突发的额度因虚拟机大小而异。
当额度用尽时,VM 会恢复到基线虚拟机性能。
与其他系列中的其他 VM 大小相比,B 系列的优势是可以节省计算成本,尤其是在需要全天候尽量少使用处理能力时。
注意
可突发 B 系列的内存与 vCore 比率并非针对 SQL Server 工作负载建议的 8。 因此,请仅考虑将这些虚拟机用于较小的应用程序、Web 服务器和开发工作负载。
Av2 系列
Av2 系列 VM 最适合入门级工作负载,如开发和测试、低流量 Web 服务器、中小型应用数据库和概念验证。
只有 Standard_A2m_v2(2 个 vCore 和 16 16 GiB 内存)、Standard_A4m_v2(4 个 vCore 和 32 32 GiB 内存)和 Standard_A8m_v2(8 个 vCore 和 64 GiB 内存)的内存与 vCore 比率为 8,使这三个虚拟机在此系列中排名前三。
这些虚拟机非常适合小型开发和测试 SQL Server 计算机。
对于小型应用程序和 Web 服务器来说,具有 8 个 vCore 的 Standard_A8m_v2 可能也是一个不错的选择。
注意
Av2 系列不支持高级存储,因此不建议将其用于生产 SQL Server 工作负载,即使是内存与 vCore 比率为 8 的虚拟机也是如此。
存储优化
存储优化的 VM 大小适合特定用例。 这些虚拟机经过专门涉及,具有经过优化的磁盘吞吐量和 IO。
受约束的 vCore
高性能 SQL Server 工作负载通常需要更多内存、IOPS 和吞吐量,但无需更高的 vCore 计数。
大多数 OLTP 工作负载都是由大量较小的事务驱动的应用程序数据库。 对于 OLTP 工作负载,仅读取或修改少量数据,但由用户数驱动的事务量要高得多。 必须向缓存计划提供 SQL Server 内存、存储最近访问的数据以提高性能,以及确保可将物理读取内容快速读取到内存中。
这些 OLTP 环境需要更高的内存量、快速存储和所需的 I/O 带宽才能以最佳方式执行。
为了保持此性能级别而不增加 SQL Server 许可成本,Azure 提供了具有受约束的 vCPU 计数的 VM 大小。
这有助于通过减少可用的 vCore,同时保持与父虚拟机相同的内存、存储和 I/O 带宽来控制许可成本。
可以将 vCPU 计数限制为原始 VM 大小的一半到四分之一。 减少可用于虚拟机的 vCore 可实现更高的内存与 vCore 比率,但计算成本将保持不变。
这些新的 VM 大小有一个用于指定活动 vCPU 数的后缀,使其更易于识别。
例如,M64-32ms 只需要许可 32 个 SQL Server vCore(具有 M64ms 的内存、I/O 和吞吐量),而M64-16ms 只需要许可 16 个 vCore。 虽然 M64-16ms 的 SQL Server 许可成本是 M64ms 的四分之一,但虚拟机的计算成本是相同的。
注意
- 大中型数据仓库工作负载仍可能受益于受约束的 vCore VM,但数据仓库工作负载通常具有以下特点:用户较少,通过并行运行的查询计划处理大量数据的进程也较少。
- 计算成本(包括操作系统许可)与父虚拟机保持相同。
后续步骤
有关详细信息,请参阅本最佳做法系列中的其他文章:
有关安全最佳做法,请参阅 Azure 虚拟机上 SQL Server 的安全注意事项。
查看 Azure 虚拟机上的 SQL Server 概述中的其他 SQL Server 虚拟机文章。 如果对 SQL Server 虚拟机有任何疑问,请参阅常见问题解答。