为 SQL Server 工作负载选择合适的 EC2 实例。 - AWS 规范指引

为 SQL Server 工作负载选择合适的 EC2 实例。

重要

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

概览

Microsoft SQL Server 在 Amazon Elastic Compute Cloud(Amazon EC2)实例上运行已超过 15 年。AWS 利用这一经验来帮助开发 Amazon EC2 实例,使其能够适应从最低规格到高性能、多区域集群等各种 SQL Server 工作负载的需求。

为 SQL Server 选择合适的 EC2 实例在很大程度上取决于您的工作负载。了解 SQL Server 的许可方式、其内存使用情况以及 SQL Server 的功能与 Amazon EC2 产品之间的对应关系,能够帮助您为您的应用程序选择最合适的 EC2 实例。

本部分介绍了各种 SQL Server 工作负载,以及如何将这些工作负载与特定的 EC2 实例相结合,从而将您的许可费用和计算成本控制在最低水平。

成本比较

Amazon EC2 使您能够以自带许可(BYOL)或按实际使用量付费的方式使用 Windows Server 和 SQL Server 许可。对于按实际使用量付费的许可,Windows Server 和 SQL Server 许可证的许可费用包含在 EC2 实例的每小时成本中。例如,您可以拥有不同价格的 AMI。AMI 的价格取决于该 AMI 所运行的 SQL Server 版本。

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

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 个 vCPU 降至 4 个 vCPU。

优化前:

服务器 EC2 实例 SQL Server 版本 月度成本
ProdDB1 x1e.2xlarge 企业 3918.64 美元
ProdDB2 x1e.2xlarge 企业 3918.64 美元
总计     7837.28 美元

优化后:

服务器 EC2 实例 SQL Server 版本 月度成本
ProdDB1 x2iedn.xlarge Standard 1215.00 美元
ProdDB2 x2iedn.xlarge Standard 1215.00 美元
总计     2430.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 与 RAM 的比例为 1:8,还提供了 Intel 处理器、AMD 处理器、增强型网络、增强型 EBS 性能、实例存储以及增强型处理器速度等选项。对于内存密集型工作负载,还有一系列名为 X 的产品系列,它们具备许多相同的选项,并将 vCPU 与 RAM 的比例提升至 1:32。由于内存优化型实例具有多种功能,因此您可以将其应用于各种性状和大小的 SQL Server 工作负载。

低于最低资源的工作负载(少于 4 个 vCPU)

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

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

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

重要

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

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

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

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

SQL Server 有一个称为缓冲池扩展的功能。此功能使 SQL Server 能够利用磁盘的一部分空间来充当 RAM 的扩展部分。当与超高速存储设备(如 Amazon EC2 实例存储中所使用的 NVMe SSD)结合使用时,缓冲池扩展功能表现十分出色。包含实例存储的 Amazon EC2 实例在实例名称中用“d”表示(例如 r5d、r6id 和 x2iedn)。

缓冲池扩展不能替代普通 RAM。但是,如果您需要超过 128GB 的 RAM,您可以将缓冲池扩展功能与 EC2 实例(如 r6id.4xlarge 和 x2iedn.xlarge)结合使用来推迟升级到企业版许可。

高性能工作负载(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,024GB 1,024GB 4,096GB 1,536GB
实例存储

NVMe SSD

(4x 1900GB)

NVMe SSD

(2x 1900GB)

io2 Block Express 支持 支持 支持 支持
Max EBS IOPS 260000 350,000 160000 260000 80,000
Max EBS 吞吐量 60Gbps 80Gbps 40Gbps 80Gbps 19Gbps
最大网络带宽 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 实例存储功能,但针对高内存工作负载,其 vCPU 与 RAM 的比例为 1:32,且 CPU 数量较低(降低了 SQL Server 的许可费用)。

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

  • r7iz:r7iz 中的“z”属性表示此实例类型侧重于高处理器性能。Sapphire Rapids 处理器的全核睿频最高可达 3.9 GHz。与 x2iezn 实例一样,r7iz 也注重高频处理器性能,但其 vCPU 与 RAM 的比例为 1:8。

其他资源