VM 大小:Azure VM 上SQL Server的性能最佳做法

适用于:Azure 虚拟机上的 SQL Server

本文提供 VM 大小指南和最佳做法,以优化SQL Server on Azure Virtual Machines(VM)的性能。

通常需要在针对成本优化和针对性能优化之间进行权衡。 此性能最佳做法系列侧重于获取在 Azure 虚拟机上运行的 SQL Server 的最佳性能。 如果工作负荷要求较低,则可能不需要每个建议的优化。 评估这些建议时应考虑性能需求、成本和工作负荷模式。

如需了解更全面的详情,请参阅本系列中的其他文章:清单存储安全性HADR 配置收集基线

警告

不支持将 tempdb 放置在具有未初始化临时磁盘的 Azure 虚拟机映像的本地临时磁盘上,例如 FXmdsv2。 此问题仅影响具有本地临时存储的新 NVMe 接口Azure Virtual Machines。 通过 Azure 门户进行这些部署可能会失败,SQL Server可能无法启动。 要么使用其他 VM 系列,要么在通过 Azure 门户部署 SQL Server 映像和手动安装 SQL Server 时,将 tempdb 放置在非临时存储上。 若要详细了解此问题,另请参阅受影响的 VM 列表,请查看 VM 部署和SQL Server故障

清单

请查看以下清单,以大致了解本文其余部分详细介绍的 VM 大小最佳做法:

  • 在选择 VM 大小之前,请配置 存储。 在最高压力条件下从源环境中收集 基线 ,然后使用 20% 缓冲区根据工作负荷的 IOPS 和吞吐量需求配置存储,以便将来增长。
  • 确定工作负荷性能特征(OLTPOLAP,工作负荷大小)以确定适合企业的 VM 大小。
  • 如果要迁移到Azure,请评估迁移准备,以查找现有SQL Server工作负荷的正确 VM 大小,然后使用 Azure Database Migration Service 进行迁移。
  • 使用 Azure Marketplace 的映像来部署 SQL Server 虚拟机,因为 SQL Server 设置和存储选项已经过配置以实现最佳性能。
  • 使用具有 4 个或多个 vCore 的 VM 大小。
  • 使用内存优化虚拟机大小实现SQL Server工作负荷的最佳性能。
    • Mbdsv3 系列为任务关键型 OLTP 和数据仓库工作负荷提供最佳的整体性能。
    • Ebdsv5 系列为大多数生产 SQL Server 工作负荷提供最佳性价比。
    • M 系列系列为最大工作负荷提供Azure中最高的内存配置。
  • 使用较低层 D 系列或 B 系列启动开发环境,并随着时间的推移发展环境。
  • 检查 VM 可支持性以避免不受支持的配置。

若要将 VM 大小清单与其他清单进行比较,请参阅全面的性能最佳做法清单

概述

高性能SQL Server工作负载通常需要更大的内存、IOPS 和吞吐量,而无需更高的 vCore 计数。

大多数 OLTP 工作负载都是由大量较小的事务驱动的应用程序数据库。 使用 OLTP 工作负荷时,只能读取或修改少量数据,但用户计数驱动的事务量要高得多。 必须让SQL Server内存可用于缓存计划、存储最近访问的数据以获取性能,并确保物理读取可以快速读取到内存中。

这些 OLTP 环境需要更高的内存量、快速存储和所需的 I/O 带宽才能以最佳方式执行。

在为 SQL Server VM 选择 VM 大小之前,请先确保 存储配置正确。 调整 VM 的大小很简单,但如果它不符合 IOPS 或吞吐量需求,则修改存储配置通常需要重新部署。

首先,在最高压力条件下从源环境中收集 基线 ,然后根据工作负荷的 IOPS 和吞吐量需求配置存储。 在确定存储配置之前,规划增长计划 - 通常在大多数环境中为 20%。

如果使用超级磁盘存储,可以降低 IOPS 和吞吐量,但不能超过部署的存储解决方案的功能。

注意

  • Azure VM 大小的文档提供了有关 Azure 中可用 VM 大小的最新信息。 如果本文与Azure VM 大小文档之间存在任何差异,则Azure VM 大小文档优先。
  • 本文档和 Azure VM 文档中可以互换使用 vCore 和 vCPU。

在适用于 SQL Server 的 Azure 虚拟机上选择 VM 大小时,请考虑以下性能最佳实践和准则。

迁移现有环境

在 Azure VM 上创建SQL Server时,请仔细考虑所需的工作负荷类型。

如果要迁移现有环境,收集性能基线以确定在 Azure VM 上运行的 SQL Server 的要求。

使用源系统中的 vCore 和内存配置作为迁移当前本地 SQL Server 数据库到 Azure VM 上的 SQL Server 的基线。

如果您拥有软件保障,请利用 Azure Hybrid Benefit,这样您就可以将您的 SQL Server 许可证分配给 Azure VM 上的 SQL Server。

创建新 VM

如果要创建新的 VM,请根据应用程序要求创建新的SQL Server VM。

如果您要为全新的云应用程序创建新的 SQL Server VM,您可以在数据和使用需求不断变化时轻松扩展 SQL Server VM。

使用较低层 D 系列或 B 系列启动开发环境,并随着时间的推移发展环境。

根据SQL Server工作负荷考虑以下 VM 系列:

  • 任务关键型工作负荷的最大内存分配Mbdsv3 系列 VM 在Azure中提供最高的内存分配,存储性能最佳。

  • 高 I/O 吞吐量与 vCore 比率:当工作负荷由大型、持续、连续的数据移动(例如分析、ETL、索引维护和备份)主导时,吞吐量比SQL Server的 IOPS 更重要,但存储管道(MB/s)成为瓶颈。 Mbdsv3 系列 VM 提供在任何云中所有 VM 系列中最高的吞吐量与 vCore 比率,达到 78.125 吞吐量/vCPU(MB/s/vCore)Ebdsv5 系列 VM 还提供高吞吐量到 vCore,吞吐量为 89.286 吞吐量/vCPU(每个 vCore MB/秒)。

    如果不知道SQL Server工作负荷的存储要求,Ebdsv5 系列最可能满足需求。 有关详细信息,请参阅存储一文。

内存与虚拟核心的比例调整

对于不需要大量内存的较小SQL Server环境,4:1 内存与 vCore 比率(如 D 系列)是Azure的良好起点。

对于任务关键型 OLTP 和 SQL Server 工作负载的最佳起点,建议使用 Ebdsv5,并采用 8:1 的内存与 vCore 比率。

SQL Server数据仓库和任务关键型环境通常需要扩展到 8:1 内存与 vCore 比率之外。

对于较大的数据仓库环境,请选择 16:1 内存与 vCore 比率或更大。

使用Marketplace中的图像

在门户中将 SQL Server VM 市场映像与存储配置配合使用。 使用此方法可以更轻松地正确创建所需的存储池,以获取工作负荷所需的大小、IOPS 和吞吐量。

选择支持高级存储性能的SQL Server VM。

有关详细信息,请参阅存储一文。

可支持性

在将SQL Server安装到 Azure VM 时,请考虑以下限制:

  • Azure VM 上的SQL Server不支持 Azure Virtual Machine Scale Sets自动化来宾修补功能会在 Azure 虚拟机规模集发布新映像版本时替换 OS 磁盘。 如果在 Azure VM 上的SQL Server中使用自动来宾修补功能,可能会中断SQL Server功能,从而导致潜在的损坏、数据丢失和可用性问题。
  • 每个 NUMA 节点的 vCore 数超过 64 个的系统不支持SQL Server。 禁用 SMT 或超线程,以便在单个 NUMA 节点超过 64 个 vCore 的 Azure 虚拟机上使用 SQL Server。
  • SQL Server 目前支持扇区大小为标准本机 512 字节和 4 KB 的磁盘。 不支持将SQL Server安装到具有 8 KB 扇区大小的磁盘,并可能导致安装失败,以及 性能下降,因为 I/O不正确。
  • Azure VM 映像上的SQL Server无法使用未初始化的临时磁盘的 VM 大小进行部署。 若要了解详细信息,请查看 Azure vm 映像上的一些SQL Server无法部署

按 VM 大小进行筛选

在部署 Azure 虚拟机时,请使用 命名约定指南 确定要在门户中筛选的虚拟机大小名称。

VM 大小名称结合了系列、子家庭、CPU 数和任何累加功能。

Example:

筛选Ebdsv5 系列 VM 时,输入 VM 大小名称,例如E64bds,或输入版本(例如v5),该版本在门户中称为生成

以下屏幕截图演示如何在 Azure 门户中按 v5 版本筛选 VM 大小列表:

Azure 门户 VM 大小筛选器示例,按第 v5 代进行筛选的截图。

请考虑以下几点:

  • 可以通过使用“添加筛选器”来应用附加筛选器,以便根据 VM 大小列表中的大小、类型(如内存优化或通用用途)以及磁盘控制器类型等因素进行缩小筛选范围。
  • 如果未看到要搜索的 VM 的结果,则可能是因为应用于 VM 大小列表的筛选器。 清除筛选器,然后重试。
  • 磁盘控制器筛选器可帮助你确定存储是否为 iSCSI 或 NVMe。

内存优化的 M 系列 VM

内存优化的 M 系列为一些最大的 SQL Server 工作负载提供 vCore 数量和内存。

以下列表描述了 M 系列 VM 的功能:

Mbdsv3 系列

参数 价值
处理器 Intel® Xeon® 第四代可扩展处理器(蓝宝石急流)
内存与 vCore 比率 8:1 到 22:1 (大小不同)
最大 vCore 数 176
Memory 高达 3,892 GiB (约 3.8 TiB)
最大 IOPS 650,000
最大吞吐量 10,000 MBps (超级磁盘)
高级存储 Yes
高级存储缓存 Yes
预期工作负荷 任务关键型 OLAP、数据仓库、 tempdb 优化、报告
临时存储 tempdb 是(容量因大小而异)

Mbdsv3 系列是一个内存优化 VM 系列,专为需要高内存到 vCore 比率的大型内存数据库和工作负荷而设计。 本系列中的 VM 使用第 4 代 Intel® Xeon® 可缩放(弗拉基快速)处理器,并采用不同的内存大小和 vCore 计数来适应SQL Server工作负载。 将 Mbdsv3 VM 用于任务关键型和数据仓库工作负荷。

Mbdsv3 VM 适用于需要高内存与 vCore 比率的大型内存中数据库和工作负荷。 它们非常适合关系数据库服务器、数据仓库、大量报告、大型缓存和内存中分析。

Mbdsv3 VM 提供多达 176 个 vCore,具有广泛的内存容量和出色的存储性能。 与性能最高的 Ebdsv5 VMs 相比,此 VM 系列在 IOPS 和吞吐量上提供了超过 50% 的提升。 Mbdsv3 VM 是任何云中可用的性能最高的 VM 选项之一。 Mbdsv3 VM 的性能特征与 Mbsv3 VM 类似,但包括强大的本地和临时存储。 这种存储使得它们非常适合 tempdb 性能优化、报告、关键任务 OLAP 和数据仓库工作负载。

内存优化型 E 系列 VM

内存优化的 E 系列 VM 专为内存密集型工作负荷而设计,例如大型数据库、大数据分析和企业应用程序,这些应用程序需要大量的 RAM 来保持高性能。

Ebdsv5 系列

参数 价值
处理器 Intel® Xeon® Platinum 8370C (Ice Lake)
内存与 vCore 比率 8:1
最大 vCore 数 112
Memory 最多 672 吉字节
最大 IOPS 400,000 (超级磁盘)
最大吞吐量 10,000 MBps (NVMe 大小)
高级存储 Yes
高级存储缓存 Yes
预期工作负荷 生产 SQL Server(大多数工作负荷)、OLTP、数据仓库
临时存储 tempdb 是(75-3,800 GiB 容量)

Ebdsv5 系列是SQL Server工作负荷的建议起点,因为它涵盖了受益于本地临时存储的方案。 此 VM 系列是在 Azure 虚拟机上运行 SQL Server 的一种均衡、内存优化和经过调优的选项。 此系列具有 8:1 内存与 vCore 比率、可预测的远程存储性能以及对高级 SSD 和超级磁盘的支持,这一系列与大多数生产SQL Server OLTP 工作负荷的核心要求保持一致。 这些 VM 在 Intel® Xeon® Platinum 8370C (Ice Lake) 处理器上运行。

Ebdsv5 VM 为每个核心提供足够的内存、强且一致的存储吞吐量以及可缩放的 I/O 特征,而无需过度预配 CPU,只需达到可接受的内存或存储级别即可。 这种平衡使得它非常适合事务工作负荷、混合 OLTP 方案和常规用途生产数据库,其中稳定性、效率和成本控制与峰值规模一样重要。

Ebdsv5 系列提供适用于大多数生产部署的性能,同时仍允许随着工作负荷特征的发展,纵向扩展或迁移到更专业的 VM 系列。

常规用途

常规用途虚拟机大小为较小的入门级工作负荷(如开发和测试、Web 服务器和较小的数据库服务器)提供均衡的内存与 vCore 比率。

由于通用用途虚拟机的内存与 vCore 比率较小,因此请务必仔细监视基于内存的性能计数器,以确保 SQL Server 获取缓冲区缓存所需的内存。 有关详细信息,请参阅 内存性能基线。 常规用途 VM 可能不适用于较大的生产SQL Server工作负荷,因为建议的最小内存与 vCore 比率低于建议的起点,即生产SQL Server工作负荷的 8:1。

Ddsv5 系列

参数 价值
处理器 Intel® Xeon® Platinum 8370C (Ice Lake)
内存与 vCore 比率 4:1
推荐用于生产环境的SQL Server的比率低于8:1; 仅适用于小型应用和开发/测试环境。
最大 vCore 数 96
Memory 最多 384 GiB
最大 IOPS 80,000
最大吞吐量 2,600 MBps
高级存储 Yes
高级存储缓存 Yes
预期工作负荷 开发/测试、小型应用、并行 SQL 和应用部署
临时存储 tempdb 是(75-3,600 GiB 容量)

Ddsv5 系列提供 vCore、内存和临时磁盘的合理组合,但内存与 vCore 的支持比率较小。

Ddsv5 VM 的延迟更低、本地存储速度更高。

这些虚拟机非常适合需要快速访问临时存储和部门关系数据库的并行 SQL 和应用部署。 本系列的所有虚拟机的标准内存与 vCore 比率均为 4。

因此,请使用Standard_D8ds_v5作为此系列中建议的最小 VM 大小。 最大的 VM 大小是具有 96 个 vCore 的 Standard_D96ds_v5。

B 系列

参数 价值
处理器 Intel® Xeon® (大小不同)
内存与 vCore 比率 0.5:1 到 4:1 (大小不同)
建议用于生产环境SQL Server的比例低于8:1
最大 vCore 数 32 (Bsv2 系列)
Memory 最多 128 GiB
最大 IOPS 最多80,000(远程存储)
最大吞吐量 最多 960 MBps
高级存储 Yes
高级存储缓存
预期工作负荷 概念证明、开发/测试、间歇性工作负荷
临时存储 tempdb 是(4-160 GiB 容量)

具有突发性能的 B 系列 VM 规格非常适合不需要持续性能的工作负载,例如概念验证和非常小型的应用程序及开发服务器。 此系列是独一无二的,因为应用能够在工作时间 突发 ,可突发额度因 VM 大小而异。 当信用额度耗尽时,VM 将返回到基线 VM 性能。

大多数 可突发的 B 系列 VM 大小具有 4 或更少的内存到 vCore 比率。 如果必须为SQL Server选择 B 系列 VM,请选择 Bsv2 系列,以具有较高内存的计算机为目标。 Standard_B32s_v2有 32 个 vCore,具有较高的存储性能。

B 系列的好处是,与其他系列中的其他 VM 大小相比,可以节省计算成本,尤其是在全天需要处理能力时。

注意

burstable B 系列不具备推荐用于运行 SQL Server 工作负荷的 8:1 内存与 vCore 比率。 因此,请仅考虑将这些虚拟机用于较小的应用程序、Web 服务器和开发工作负载。

约束的 vCPU

为了在不产生更高 SQL Server 许可成本的情况下保持可接受的性能水平,Azure 通过一种称为 受限 vCPU 的功能提供 VM 大小,从而减少 vCore 数量。

此功能有助于控制许可成本,方法是减少可用的 vCore,同时维护父虚拟机的相同内存、存储和 I/O 带宽。

可以将 vCore 计数限制为原始 VM 大小的一半到四分之一。 通过减少虚拟机可用的 vCore,可以获得更高的内存与 vCore 比率,但计算和 OS 成本保持不变。

这些新 VM 大小有一个后缀,用于指明活动 vCore 的数量,便于识别。

例如,M64-32ms仅需许可 32 个 SQL Server vCore,但具有M64ms的内存、I/O 和吞吐量。 M64-16ms 仅需要 16 个 vCore 的许可。 虽然 M64-16ms 的SQL Server许可成本为 M64ms 的四分之一,但虚拟机的计算和 OS 成本相同。

请考虑以下几点:

  • 当不需要更高的计算资源(尤其是对于更大的 VM 大小)时,受约束的 vCPU 最有利,但内存和存储是提高内存与 vCore 比率的优先级。
  • 受约束的 vCPU 选项是父Azure VM 大小的四分之一到一半。
  • 你支付生成的受约束 vCPU 的SQL Server许可成本,这大大降低了部署成本。
  • 计算成本(包括作系统许可)与父虚拟机相同。
  • 并非所有 VM 系列都支持受约束的 vCPU。 查看 受约束的 vCPU 文档 ,了解最新支持的 VM 大小。

有关详细信息,请参阅本最佳做法系列中的其他文章:

有关其他SQL Server虚拟机文章,请参阅 SQL Server on Azure Virtual Machines 概述。 如果对 SQL Server 虚拟机 有疑问,请参阅 常见问题