为 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 内存优化型
低于最低资源的工作负载(少于 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 有一个称为缓冲池扩展
缓冲池扩展不能替代普通 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。
其他资源
-
通用型 Amazon EC2 实例
(AWS 文档) -
比较工具
(Vantage) -
许可 – SQL Server
(AWS 文档)