本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
整合实例
本部分重点介绍将多个 SQL Server 实例整合到同一台服务器上的成本优化方法,旨在降低许可成本并最大限度地提高资源利用率。
概述
创建实例是安装 SQL Server 数据库引擎这一过程的一部分。SQL Server 实例是一个完整的安装版本,包含其自身的服务器文件、安全登录信息以及系统数据库(master、model、msdb 和 tempdb)。因为每个实例都有其自身的文件和服务,所以您可以在同一操作系统上安装多个 SQL Server 实例,而这些实例之间不会相互干扰。但是,由于这些实例都安装在同一台服务器上,因此它们共享相同的硬件资源,包括计算能力、内存和网络连接。
在生产环境中,通常每个服务器只会使用一个 SQL Server 实例,这样“繁忙”的实例就不会过度占用共享硬件资源。为每个 SQL Server 实例配备其专属的操作系统,并为其分配独立的资源,这比依赖资源治理方式要好得多。这对于那些需要大量 RAM 和 CPU 资源的高性能 SQL Server 工作负载来说尤其适用。
但是,并非所有 SQL Server 工作负载都会消耗大量资源。例如,一些组织会为其每位客户分配专属的 SQL Server 实例,以满足合规或安全方面的要求。对于规模较小的客户或者那些通常不太活跃的客户而言,这意味着以最少的资源来运行 SQL Server 实例。
正如 Microsoft SQL Server 2019:许可指南
成本优化方案
本节探讨了一个示例场景,该场景对比了运行四台 Windows Server 服务器(每台服务器仅配备一个 SQL Server 实例)与运行一台更大规模的 Windows Server 服务器(该服务器同时运行多个 SQL Server 实例)之间的差异。
如果每个 SQL Server 实例只需要两个 v CPUs 和 8 GB 内存,则每台服务器的 SQL Server 许可证总成本为 7,890 美元,此外每小时的计算成本为 0.096 美元。
| EC2 实例 | v CPUs | RAM | Price | v CPUs 获得许可 | SQL Server 许可总成本 |
|---|---|---|---|---|---|
| m6i.large | 2 | 8 | 0.096 | 4 | 7,890 美元 |
如果将服务器数量扩大到四台,那么总的费用将是 31560 美元,其中包括 SQL Server 的许可费用,以及每小时 0.384 美元的计算费用。
| EC2 实例 | v CPUs | RAM | Price | v CPUs 获得许可 | SQL Server 许可总成本 |
|---|---|---|---|---|---|
| 4x m6i.large | 2 | 32 | 0.384 | 16 | 31,560 美元 |
如果将所有四个 SQL Server 实例合并到一个 EC2 实例中,则计算资源和计算的总量将保持不变。但是,通过消除不必要的 SQL Server 许可成本,您能够将运行该工作负载的总成本降低 15780 美元。
| EC2 实例 | v CPUs | RAM | Price | v CPUs 获得许可 | SQL Server 许可总成本 |
|---|---|---|---|---|---|
| m6i.2xlarge | 8 | 32 | 0.384 | 8 | 15,780 美元 |
注意
在前面的表格中,计算成本显示了us-east-1在该地区运行 Windows Server 的亚马逊 EC2服务器的按小时按需定价。SQL Server 标准版的许可费用指的是 Microsoft 的 SQL Server 公开定价
成本优化建议
如果您正在考虑整合 SQL Server 实例,那么您最需要关注的问题就是您想要整合的每个实例所消耗的资源情况。为了更好地了解每台服务器上的工作负载模式,收集一段时间内的性能指标很重要。一些用于监控资源消耗的常用工具包括亚马逊 CloudWatch、Windows 性能监控器
我们建议您在分析您的 SQL Server 工作负载是否能够合并以使用同一服务器资源(同时确保这些资源不会相互干扰)时,考虑以下问题:
-
稳定运行状态下消耗了哪些资源(CPU、内存和网络带宽)?
-
峰值状态下消耗了哪些资源(CPU、内存和网络带宽)?
-
峰值多久发生一次? 峰值是否一致?
-
一台服务器的资源峰值是否与另一台服务器的资源峰值重合?
-
SQL Server 使用的存储 IOPS 和吞吐量分别是多少?
如果您想继续制定合并 SQL Server 实例的计划,请参阅 AWS
云运营与迁移博客上的 “在一个亚马逊 EC2 实例上运行多个 SQL Server
-
默认的 SQL Server 数据库实例名为
MSSQLSERVER并使用端口 1433。 -
安装在同一台服务器上的每个其他实例都是一个“命名的”数据库实例。
-
每个命名的实例都有一个唯一的实例名称和一个唯一的端口。
-
SQL Server 浏览器
必须运行,以便协调对命名实例的访问流量。 -
每个实例都可以为数据库数据文件和单独的登录信息分别指定不同的位置。
-
SSQL Server 的最大服务器内存设置
必须根据每个实例的性能需求进行配置,其组合总内存还会为底层操作系统留出足够的内存。
其他资源
-
SQL Server 许可数据表
(AWS 云运营和迁移博客) -
SQL Server 多实例设置博客文章
(AWS 云操作和迁移博客) -
SQL Server 最佳实践指南(AWS 规范性指导文档)