你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
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 系列和 Ebdsv5 系列、Msv3 和 Mdsv3 系列提供 OLTP 工作负荷所需的最佳内存与 vCore 比率。
- M 系列 VM 在 Azure 中提供最高的内存与 vCore 比率。 对于任务关键型 OLTP 和数据仓库工作负荷,请考虑这些 VM。
- 使用 Azure 市场映像来部署 SQL Server 虚拟机,配置 SQL Server 设置和存储选项以获得最佳性能。
- 收集目标工作负载的性能特征,并使用它们来确定适用于你的业务的 VM 大小。
- 使用数据迁移助手和 SKU 建议工具为现有 SQL Server 工作负载查找正确的 VM 大小。
- 使用 Azure Data Studio 迁移到 Azure。
警告
当前不支持将 SQL Server 安装到每个 NUMA 节点超过 64 个核心的系统。 此限制目前适用于 Msv3 和 Mdsv3 中型内存系列中的 Standard_M176s_3_v3 和 Standard_M176s_4_v3 Azure 虚拟机大小。
若要将 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 要求,此系列最有可能满足你的需求。 有关详细信息,请参阅存储一文。
注意
较大的 Ebdsv5 系列大小(48 个 vCPU 或更大)支持启用了 NVMe 的存储访问。 为了利用这种高 I/O 性能,必须使用 NVMe 部署虚拟机。 即将推出对 SQL Server 市场映像的 NVMe 支持,但目前必须自行安装 SQL Server 才能利用 NVMe。
SQL Server 数据仓库和任务关键型环境通常需要缩放到内存与 vCore 比率大于 8。 对于中等环境,你可能想要为更大的数据仓库环境选择 16 个内存到 vCore 比率,并为更大的数据仓库环境选择 32 个内存到 vCore 比率。
SQL Server 数据仓库环境通常受益于大型计算机的并行处理。 因此,对于大型数据仓库环境,强烈建议选择 M 系列和 Mv2 系列。
使用源计算机的 vCPU 和内存配置作为将当前本地 SQL Server 数据库迁移到 Azure VM 上的 SQL Server 的基线。 如果你有软件保障,请利用 Azure 混合权益将你的许可证带到 Azure,并节省 SQL Server 许可成本。
内存优化 M 系列 VM
M 系列 为某些最大的 SQL Server 工作负载提供较高的 vCore 数量和内存。
下表列出了 M 系列 VM 的功能:
Msv3 和 Mdsv3 系列
Msv3 和 Mdsv3 虚拟机在中等、高和非常高的内存级别上设计了计算能力和内存功能。 与上一代 Mv2 VM 相比,这些 VM 提供更高的性能、可伸缩性和对故障的复原能力。
下面列出了本系列中的 VM:
- Msv3 和 Mdsv3 中型内存 VM:由第 4 代 Intel® Xeon® 可缩放处理器提供支持,并提供高达 4 TB 的内存、416 个 vCPU、130,000 IOPS 和 4,000 MBps 的远程存储吞吐量和 NVMe 接口。
- Msv3 和 Mdsv3 高内存 VM:专用于内存范围从 6 TB 到 16 TB、高达 832 个 vCPU、高达 260,000 IOPS 和 8,000-MBps 吞吐量到具有 NVMe 接口的远程存储的高内存工作负荷。
- Mdsv3 非常高的内存系列:由第 4 代 Intel® Xeon® Platinum 8490H(弗拉基快速)处理器提供支持,并且具有任意基于 M 系列虚拟机的最大内存占用量,提供高达 32 TB 的内存、1,792 个 vCPU、高达 200,000 IOPS 和 8,000 MBps 的远程存储吞吐量。
警告
当前不支持将 SQL Server 安装到每个 NUMA 节点超过 64 个核心的系统。 此限制目前适用于 Msv3 和 Mdsv3 中型内存系列中的以下 Azure 虚拟机大小:Standard_M176s_3_v3、Standard_M176s_4_v3、Standard_M176ds_3_v3、Standard_M176ds_4_v3
内存优化的 E 系列 VM
E 系列 VM 专为内存密集型工作负荷而设计,例如大型数据库、大数据分析和企业应用程序,这些应用程序需要大量的 RAM 来保持高性能。
Ebdsv5 系列
Ebdsv5 系列是一系列内存优化 VM,可提供 Azure 中可用的最高远程存储吞吐量。 这些 VM 的内存与 vCore 比率为 8:1,以及高 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 的建议比率,因此仅当需要隔离时才会使用。
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 系列的内存与 vCore 比率并非针对 SQL Server 工作负载建议的 8。 因此,请仅考虑将这些虚拟机用于较小的应用程序和开发工作负载。
DCadsv5 系列
DCadsv5 系列虚拟机大小是具有临时磁盘的常规用途 Azure 机密 VM。 查看机密 VM,了解 Azure 机密 VM 的安全优势。
由于 Azure 机密 VM 的安全功能可能会带来性能开销,请测试工作负荷并选择满足性能要求的 VM 大小。
B 系列
可突发 B 系列虚拟机大小非常适合不需要一致性能的工作负载,如概念证明以及非常小的应用程序和开发服务器。
大多数可突发 B 系列虚拟机大小的内存与 vCore 比率为 4。 最大的可突发 B 系列是 具有 20 个 vCore 和 80 GiB 内存的Standard_B20ms 。
该系列是独一无二的,因为应用能够在营业时间突发,并且可突发的额度因虚拟机大小而异。
当额度用尽时,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 TB 的 NVMe SSD。 这意味着,对于此系列中最大的 VM,L80s_v2有 80 个 vCPU 和 640 BiB 内存,具有 10x1.92TB 的 NVMe 存储。 所有这些虚拟机的内存与 vCore 比率始终一致,均为 8。
NVMe 存储是暂时的,这意味着,如果解除分配虚拟机或将其移动到其他主机进行服务修复,则这些磁盘上的数据将会丢失。
Lsv2 和 Ls 系列支持高级存储,但不支持高级存储缓存。 不支持创建用于增加 IOP 的本地缓存。
警告
将数据文件存储在临时 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,但数据仓库工作负载通常具有以下特点:用户较少,通过并行运行的查询计划处理大量数据的进程也较少。
- 计算成本(包括操作系统许可)与父虚拟机保持相同。
后续步骤
有关详细信息,请参阅本最佳做法系列中的其他文章:
有关安全最佳做法,请参阅 Azure 虚拟机上 SQL Server 的安全注意事项。
查看 Azure 虚拟机上的 SQL Server 概述中的其他 SQL Server 虚拟机文章。 如果对 SQL Server 虚拟机有任何疑问,请参阅常见问题解答。