你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

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

适用于: Azure VM 上的 SQL Server

本文针对 VM 大小提供一系列最佳做法和准则,以优化 Azure 虚拟机 (VM) 上 SQL Server 的性能。

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

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

清单

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

  • 确定工作负载的性能特征,以确定适用于你的业务的 VM 大小。
  • 如果要迁移到 Azure,请使用数据迁移助手SKU 建议等工具找到适合现有 SQL Server 工作负载的 VM 大小,然后使用 Azure Data Studio 进行迁移。
  • 使用 Azure 市场映像来部署 SQL Server VM,配置 SQL Server 设置和存储选项以获得最佳性能。
  • 将 VM 大小与 4 个或更多个 vCPU 配合使用。
  • 使用内存优化的虚拟机大小,以实现 SQL Server 工作负载的最佳性能。
    • Edsv5 系列,以及 Msv3 和 Mdsv3 系列提供为 OLTP 工作负载推荐的最佳内存与 vCore 比率。
    • Mbdsv3-series VM 为 Azure VM 上的 SQL Server 工作负载提供最佳性能。 对于任务关键型 OLTP 和数据仓库 SQL Server 工作负载,请先考虑此系列。
    • Ebdsv5 系列提供较高的 I/O 吞吐量与 vCore 的比率,内存与 vCore 的比率达到 8:1。 此系列为 Azure VM 上的 SQL Server 工作负载提供最佳性能。 对于大多数 SQL Server 工作负载,请首先考虑这些 VM。
    • M 系列家族为 Azure 提供内存分配最高的 VM。
    • Mbsv3 和 Mbdsv3 系列 VM 提供较高的内存分配和 M 系列家族中最高的 I/O 吞吐量与 vCore 比率,以及至少 8:1、一致的内存与 vCore 比率。
  • 使用较低层 D 系列、B 系列或 Av2 系列开始开发环境,并随着时间的推移扩展你的环境。

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

概述

在 Azure VM 上创建 SQL Server 时,请仔细考虑所需工作负载的类型。 如果要迁移现有环境,请收集性能基线,以确定 SQL Server 对 Azure VM 的要求。 使用源计算机的 vCPU 和内存配置作为将当前本地 SQL Server 数据库迁移到 Azure VM 上的 SQL Server 的基线。 如果有软件保障,可以利用 Azure 混合权益将许可证带入 Azure,节省 SQL Server 许可成本。

如果为新 VM,请根据应用程序要求创建新的 SQL Server VM。 如果要使用为云生成的新应用程序创建新的 SQL Server VM,则随着数据和使用情况要求的变化,你可以轻松地缩放 SQL Server VM。 使用较低层 D 系列、B 系列或 Av2 系列开始开发环境,并随着时间的推移扩展你的环境。

请考虑基于 SQL Server 工作负载的以下 VM 系列:

  • 任务关键型工作负载的最高内存分配:Mbsv3 和 Mbdsv3 系列 VM 在 Azure 中提供最高的内存分配,具有最佳存储性能。
  • 高 I/O 吞吐量与 vCore 比率:Mbsv3 和 Mbdsv3 系列 VM 提供任何云中任何 VM 系列的最高吞吐量与 vCore 比率。 Ebdsv5 系列 VM 在 Azure 中提供第二高的吞吐量与 vCore 比率。 如果不知道 SQL Server 工作负载的 I/O 要求,Ebdsv5 系列 VM 最有可能满足你的需求。 有关详细信息,请参阅存储一文。
  • 大型计算机的并行处理:Msv3 和 Mdsv3 系列 VM 提供并行处理,因此它们非常适合大型数据仓库环境。

SQL Server 数据仓库和任务关键型环境通常需要缩放到内存与 vCore 比率大于 8:1。 对于中等环境,你可能希望选择内存与 vCore 比率为 16:1,而对于较大的数据仓库环境,则可能希望该比率为 32:1。

将 SQL Server VM 市场映像与门户中的存储配置结合使用。 这样便可更轻松地正确创建具有工作负载所需的大小、IOPS 和吞吐量的存储池。 必须选择支持高级存储性能的 SQL Server VM。 有关详细信息,请参阅存储一文。

内存优化的 M 系列 VM

M 系列 为某些最大的 SQL Server 工作负载提供较高的 vCore 数量和内存。

下面列出了 M 系列 VM 的功能:

Mbsv3 和 Mbdsv3 系列

Mbsv3 和 Mbdsv3 系列是内存优化 VM,专为内存中大型数据库和具有高内存与 CPU 比率的工作负载而设计。 此系列中的 VM 基于第 4 代 Intel® Xeon® Scalable,提供一系列内存大小和 vCPU 计数,以满足 SQL Server 工作负载的需求。 对于任务关键型和数据仓库工作负载,建议使用 Mbsv3 和 Mbdsv3 系列 VM。

Mbsv3 和 Mbdsv3 系列 VM 支持支持内存中大型数据库和工作负载,其内存与 CPU 比率高,非常适合关系数据库服务器、数据仓库、大量报告、大型缓存和内存中分析。

下面是此系列中 VM 的特征:

  • Mbsv3 系列提供高达 176 个 vCore 和 1,536 GiB 内存,具有一致的 8:1 内存到 vCore 比率、650,000 IOPS 和 6,000 MBps 的存储吞吐量。
  • Mbdsv3 系列提供高达 176 个 vCore 和 4 TiB 内存、650,000 IOPS 和 10,000 MBps 的存储吞吐量。 此 VM 系列提供 IOPS 和吞吐量超过 50% 的改进,达到性能最高的 Ebdsv5 系列,这使 Mbdsv3 成为任何云中可用的最高性能 VM 选项之一。 Mbdsv3 VM 系列具有与 Mbsv3 VM 系列类似的性能特征,但包括强大的本地和临时存储,使其非常适合 tempdb 性能优化、报告、任务关键 OLAP 和数据仓库工作负载。

Msv3 和 Mdsv3 系列

Msv3 和 Mdsv3 虚拟机具有中等、高和非常高内存级别的计算能力和内存功能。 与上一代 Mv2 VM 相比,这些 VM 提供更高的性能、可伸缩性和对故障的复原能力。

下面列出了本系列中的 VM:

  • Msv3 和 Mdsv3 中等内存 VM:由第 4 代 Intel® Xeon® Scalable 处理器提供支持,并提供高达 4 TiB 的内存、416 个 vCPU、130,000 IOPS 和 4,000 MBps 的远程存储吞吐量,以及 NVMe 接口。
  • Msv3 和 Mdsv3 高内存 VM:专为内存范围从 6 TiB 到 16 TiB、最高 832 vCPU、最高 260,000 IOPS 和 8,000-MBps 吞吐量以及 NVMe 接口的远程存储的高内存工作负载而设计。
  • Mdsv3 非常高的内存系列:由第 4 代 Intel® Xeon® Platinum 8490H (Sapphire Rapids) 处理器提供支持,并且拥有基于 M 系列虚拟机的最大内存占用量,提供高达 32 TiB 内存、1,792 个 vCPU、高达 200,000 IOPS 和 8,000 MBps 的远程存储吞吐量。

注意

禁用 SMT,从而在每个 NUMA 节点超过 64 个 vCore 的 Azure VM 上使用 SQL Server。

内存优化型 E 系列 VM

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

Ebdsv5 系列

Ebdsv5 系列是一个内存优化 VM 系列,提供 Azure 中可用的最高远程存储吞吐量。 这些 VM 的内存与 vCore 的比率为 8:1,再加上较高的 I/O 吞吐量,从而成为大多数 SQL Server 工作负载的理想选择。 Ebdsv5 系列 VM 为在 Azure 虚拟机上运行的 SQL Server 工作负载提供最佳性价比,我们强烈建议将其用于大多数生产 SQL Server 工作负载。

注意

较大的 Ebdsv5 系列大小(48 个 vCPU 或更大)支持启用了 NVMe 的存储访问。 为了利用这种高 I/O 性能,必须使用 NVMe 部署虚拟机。

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 的建议比率,因此仅当需要隔离时才会使用。

Edsv5 系列虚拟机支持高级存储高级存储缓存

ECadsv5 系列

ECadsv5 系列虚拟机大小是具有临时磁盘的内存经过优化的 Azure 机密 VM。 查看机密 VM,了解 Azure 机密 VM 的安全优势。

由于 Azure 机密 VM 的安全功能可能会带来性能开销,请测试工作负载并选择满足性能要求的 VM 大小。

常规用途

常规用途虚拟机大小旨在为较小的入门级工作负载(如开发和测试、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 系列虚拟机支持高级存储高级存储缓存

注意

Ddsv5 系列的内存与 vCore 比率并非针对 SQL Server 工作负载建议的 8。 因此,请仅考虑将这些虚拟机用于较小的应用程序和开发工作负载。

DCadsv5 系列

DCadsv5 系列虚拟机大小是具有临时磁盘的常规用途 Azure 机密 VM。 查看机密 VM,了解 Azure 机密 VM 的安全优势。

由于 Azure 机密 VM 的安全功能可能会带来性能开销,请测试工作负载并选择满足性能要求的 VM 大小。

B 系列

可突发 B 系列虚拟机大小非常适合不需要一致性能的工作负载,如概念证明以及非常小的应用程序和开发服务器。

大多数可突发 B 系列虚拟机大小的内存与 vCore 比率为 4。 最大的可突发 B 系列为 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。

Lsv2 系列

Lsv2 系列具有高吞吐量、低延迟和本地 NVMe 存储的特性。 优化 Lsv2 系列 VM 以使用直接连接到 VM 的节点上的本地磁盘,而不是使用持久数据磁盘。

这些虚拟机是适用于大数据、数据仓库、报告和 ETL 工作负载的有力选择。 本地 NVMe 存储具有高吞吐量和 IOPS 特性,非常适合用于处理将加载到数据库的文件,以及可以从源系统或其他存储库(例如 Azure Blob 存储或 Azure Data Lake)重新创建数据的其他方案。 Lsv2 系列 VM 还可以通过突发方式提高其磁盘性能,一次长达 30 分钟。

这些虚拟机的大小介于 8 到 80 个 vCPU 之间,每个 vCPU 内存为 8 GiB,每 8 个 vCPU 有 1.92 TiB 的 NVMe SSD。 这意味着,此系列中最大的 VM L80s_v2 具有 80 个 vCPU 和 640 GiB 的内存,以及 10x1.92 TiB 的 NVMe 存储。 所有这些虚拟机的内存与 vCore 比率始终一致,均为 8。

NVMe 存储是暂时的,这意味着,如果解除分配虚拟机或将其移动到其他主机进行服务修复,则这些磁盘上的数据将会丢失。

Lsv2 和 Ls 系列支持高级存储,但不支持高级存储缓存。 不支持创建本地缓存以提高 IOPS。

警告

将数据文件存储在临时 NVMe 存储上,可能会导致在解除分配 VM 时数据丢失。

受约束的 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,但数据仓库工作负载通常具有以下特点:用户较少,通过并行运行的查询计划处理大量数据的进程也较少。
  • 计算成本(包括操作系统许可)与父虚拟机保持相同。

后续步骤

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