为 SQL Server 工作负载选择正确的 EC2 实例 - AWS 规范性指导

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

为 SQL Server 工作负载选择正确的 EC2 实例

重要

在阅读本部分之前,我们建议您先阅读本指南的了解 SQL Server 许可为 Windows 工作负载选择合适的实例类型部分。

概述

微软 SQL Server 在亚马逊弹性计算云 (亚马逊 EC2) 实例上运行已有 15 年多了。 AWS 借鉴了这种经验,并利用它来帮助开发 Amazon EC2 实例,以适应从最低规格一直运行到高性能、多区域集群的 SQL Server 工作负载。

为 SQL Server 选择正确的 EC2 实例在很大程度上取决于您的工作负载。了解 SQL Server 的许可方式、内存使用方式以及 SQL Server 功能如何与 Amazon EC2 产品保持一致,可以帮助您找到最适合您的应用程序的 EC2实例。

本节介绍各种 SQL Server 工作负载,以及如何将它们与某些 EC2 实例配对以将许可和计算成本降至最低。

成本比较

亚马逊 EC2 允许你自带许可证 (BYOL) 或使用 Windows Server 和 SQL Server 许可按需付费。对于 pay-as-you-go许可,Windows Server 和 SQL Server 许可证的许可成本已计入 EC2 实例的每小时成本中。例如,您可以选择不同的价格 AMIs 和不同的价格。AMI 的价格取决于该 AMI 所运行的 SQL Server 版本。

Windows Server 和 SQL Server 定价未逐项列出。您将找不到 AWS Pricing Calculator 等工具的分项定价。如果您选择包含许可证产品的不同组合,则可以计算出许可费用,如下表所示。

EC2 实例 AMI 计算价格 Windows 许可证价格 SQL 许可证价格 总价格
r5.xlarge Linux(计算定价) 183.96 美元 - - 183.96 美元
r5.xlarge Linux + SQL 开发人员版 183.96 美元 $0 $0 183.96 美元
r5.xlarge Windows Server(LI) 183.96 美元 134.32 美元 - 318.28 美元
r5.xlarge Windows + SQL 开发人员版 183.96 美元 134.32 美元 $0 318.28 美元
r5.xlarge Windows + SQL Web 版(LI) 183.96 美元 134.32 美元 49.64 美元 367.92 美元
r5.xlarge Windows + SQL 标准版(LI) 183.96 美元 134.32 美元 350.4 美元 668.68 美元
r5.xlarge Windows + SQL 企业版(LI) 183.96 美元 134.32 美元 1095 美元 1413.28 美元
注意

上述表格中的定价基于 us-east-1 区域的按需定价确定。

运行 SQL Server 的最经济有效的方法是先使用较低版本,直到您需要使用更高版本所具备的功能时。有关更多信息,请参阅本指南的比较 SQL Server 版本部分。从 SQL Server Web 版升级到 SQL Server 标准版,其所需支付的许可费用是 SQL Server Web 版的七倍以上,并且是从标准版升级到企业版的许可费用的三倍以上。许可费用的差异是一个需要考虑的重要因素,在本节的后续部分中对此进行了详细探讨。

成本优化方案

以一个示例场景为例,一家负责追踪运输车辆的分析公司正试图提升其 SQL Server 的性能。在 MACO 专家审查了公司的性能瓶颈后,该公司从 x1e.2xlarge 实例转换到 x2iedn.xlarge 实例。尽管实例大小较小,但对 x2 实例所做的改进通过使用缓冲池扩展,提高了 SQL Server 的性能和优化效果。这使该公司能够从 SQL Server 企业版降级到 SQL Server 标准版,并将其 SQL Server 许可从 8 v 减少CPUs 到 4 v CPUs。

优化前:

服务器 EC2 实例 SQL Server 版本 月度成本
Prod DB1 x1e.2xlarge Enterprise 3,918.64 美元
Prod DB2 x1e.2xlarge Enterprise 3,918.64 美元
总计     7,837.28 美元

优化后:

服务器 EC2 实例 SQL Server 版本 月度成本
Prod DB1 x2iedn.xlarge 标准 1,215.00 美元
Prod DB2 x2iedn.xlarge 标准 1,215.00 美元
总计     2,430.00 美元

从 x1e.2xlarge 实例到 x2iedn.xlarge 实例的这一合并更改使该客户每月在其生产数据库服务器上节省了 5407 美元的费用。这使工作负载的总成本降低了 69%。

注意

上述表格中的定价基于 us-east-1 区域的按需定价确定。

成本优化建议

内存优化型实例

SQL Server 的最重要方面之一在于要明白其对内存的依赖程度。SQL Server 尝试使用操作系统未使用的所有可用 RAM(默认安装最多为 2TB)。这样做是出于性能方面的考虑。处理内存中的数据要比频繁地从磁盘拉取数据、进行更改然后再写回磁盘要高效得多。相反,SQL Server 会尽可能多地从所连接的数据库中加载数据,并将这些数据保存在 RAM 中。对数据所做的更改发生在内存中,稍后会固化到磁盘中。

注意

有关 SQL Server 如何写入更改的详细说明,请参阅 Microsoft 文档中的写入页面

由于 SQL Server 在使用较大的 RAM 时性能会更好,因此我们通常建议从 Amazon EC2 内存优化的实例类型开始。内存优化型实例功能多样,提供了多种不同的选项。R 系列的 vCPU-to-RAM比例为 1 比 8,可选择英特尔处理器、AMD 处理器、增强的网络、增强的 EBS 性能、实例存储和增强的处理器速度。对于内存密集型工作负载,还有一个 X 系列,它结合了许多相同的选项,并将比率扩展到 1 vCPU-to-RAM 比 32。由于内存优化型实例具有多种功能,因此您可以将其应用于各种性状和大小的 SQL Server 工作负载。

低于最低资源的工作负载(小于 4 vCPUs)

虽然某些使用案例在使用可爆发(T3)实例时运行效果良好,但我们建议您一般不要将可爆发实例用于 SQL Server 工作负载。SQL Server 的许可基于CPUs 分配给实例的 v 数。如果 SQL Server 大部分时间处于闲置状态,并且正在获取爆发配额,则您需要为未充分利用的 SQL 许可证支付费用。此外,SQL Server 的最低许可证要求为每台服务器 4 个内核。这意味着,如果您的 SQL Server 工作负载不需要 4 v CPUs 的计算能力,则需要支付未使用的 SQL Server 许可。在这些情况下,最好将多个 SQL Server 实例整合到一个更大的服务器上。

使用最少资源(小于 64GB RAM)的工作负载

许多 RAM 在 64GB 以下的 SQL Server 工作负载并不优先考虑高性能或高可用性。对于这些类型的工作负载,如果应用程序受 Microsoft 的许可规定所约束,则 SQL Server Web 版可能会是一个合适的选择。

重要

根据 Microsoft 的许可条款,SQL Server Web 版的使用案例受限。SQL Server Web 版的许可仅支持公用且可通过互联网访问的网页、网站、Web 应用程序和 Web 服务。它不能用于支持 line-of-business应用程序(例如,客户关系管理、企业资源管理和其他类似的应用程序)。

SQL Server 网络版可扩展到 32 v CPUs 和 64 GB 内存,比 SQL Server 标准版便宜 86%。对于资源需求较低的工作负载,使用像 r6a 这样的 AMD 内存优化型实例也是不错的选择,这种实例的计算价格比其对应的 Intel 产品低 10%,而这样做能够将计算和 SQL 许可费用控制在最低水平。

资源需求为平均值的工作负载(小于 128GB RAM)

大多数 RAM 最多为 128GB 的 SQL Server 工作负载采用 SQL Server 标准版。SQL Server 标准版比 SQL Server 企业版便宜 65-75%,并且可以扩展到 48 v CPUs 和 128 GB 内存。由于 128GB 的 RAM 限制通常会在 48 个 vCPU 的限制之前就被耗尽,因此这是大多数希望避免升级到 SQL Server 企业版的客户所关注的重点。

SQL Server 有一个称为缓冲池扩展的功能。此功能使 SQL Server 能够利用磁盘的一部分空间来充当 RAM 的扩展部分。缓冲池扩展与超快速存储(如 Amazon EC2 实例存储中 NVMe SSDs 使用的存储)结合使用时效果很好。包含 EC2 实例存储空间的亚马逊实例在实例名称中用 “d” 表示(例如 r5d、r6id 和 x2iedn)。

缓冲池扩展不能替代普通 RAM。但是,如果您需要超过 128 GB 的 RAM,则可以将缓冲池扩展与 r6id.4xlarge 和 x2iedn.xlarge 等 EC2实例一起使用,以延迟企业版许可的升级。

高性能工作负载(RAM 超过 128GB)

对于那些对性能要求高的 SQL Server 工作负载而言,进行成本优化颇具挑战性,因为它们依赖大量的资源。但是,了解 EC2 实例的差异可以防止您做出错误的选择。

下表显示了各种内存优化 EC2 实例及其性能限制。

  r5b R6idn r7iz x2iedn x2iezn
处理器

3.1 GHz

第二代 Intel Xeon 处理器

3.5 GHz

第三代 Intel Xeon 处理器

3.9 GHz

第四代 Intel Xeon Scalable 处理器

3.5 GHz

第三代 Intel Xeon 处理器

4.5 GHz

第二代 Intel Xeon 处理器

CPU:RAM 比率 1:8 1:8 1:8 1:32 1:32
最大 vCPU 96 128 128 128 48
最大 RAM 768 GB 1,024 GB 1,024 GB 4,096 GB 1,536 GB
实例存储

NVMe SSD

(4x 1900GB)

NVMe SSD

(2x 1900GB)

io2 Block Express 支持 支持 支持 支持
Max EBS IOPS 260000 350,000 160000 260000 80,000
Max EBS 吞吐量 60 Gbps 80 Gbps 40Gbps 80 Gbps 19 Gbps
最大网络带宽 25 Gbps 200 Gbps 50 Gbps 100 Gbps 100 Gbps

每个实例都有不同的用途。了解您的 SQL Server 工作负载有助于您选择最适合您的实例类型。

有关属性的详细信息:

  • r5b:r5b 中的“b”属性表示此实例类型侧重于高 EBS 性能。在第五代内存优化型实例中,r5b 是首选。它是第一个利用 io2 Block Express 卷并达到最大存储 IOPS 260000 的实例类型。r5b 实例类型对于需要高 EBS 性能的情况来说,仍是一种经济实惠的选择。

  • r6idn:与上一代相比,第六代内存优化型实例提供了相当大的改进。与 r5b 相比,r6idn 在 EBS 性能方面的改进更进一步,将最大 IOPS 提升到了 350000。r6idn 还为 tempdb 和缓冲池扩展预留了一个实例存储卷,以进一步提升 SQL Server 的性能。

  • x2iedn:x2iedn 与 r6idn 相似。它提供类似级别的增强型 EBS、增强型联网和 NVMe SSD 实例存储,但对于高内存工作负载和低 CPU 数量(较低的 SQL Server 许可成本),其 vCPU-to-RAM比例为 1:32。

  • x2iezn:x2iezn 中的“z”属性表示此实例类型侧重于高处理器性能。Cascade Lake 处理器的全核涡轮频率高达 4.5。 GHz我们建议您在希望将 vCPU 数量保持在较低水平的场景中使用此 EC2 实例,并采用 1:32 的 vCPU-to-RAM比例。这反过来又可以降低 SQL Server 许可费用。

  • r7iz:r7iz 中的“z”属性表示此实例类型侧重于高处理器性能。Sapphire rapids 处理器的全核涡轮频率高达 3.9 GHz。与 x2iezn 实例一样,r7iz 优先考虑高频处理器性能,但比例为 1:8。 vCPU-to-RAM

其他资源