

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 合併執行個體
<a name="consolidate-instances"></a>

本節著重於將多個 SQL Server 執行個體合併到相同伺服器的成本最佳化技術，以將授權成本降至最低，並最大化資源使用率。

## 概觀
<a name="consolidate-instances-overview"></a>

建立執行個體是安裝 SQL Server 資料庫引擎程序的一部分。SQL Server 執行個體是完整的安裝，包含自己的伺服器檔案、安全登入和系統資料庫 （主要、模型、msdb 和 tempdb)。由於執行個體擁有自己的所有檔案和服務，因此您可以在相同的作業系統上安裝多個 SQL Server 執行個體，而不需要執行個體互相干擾。不過，由於執行個體都安裝在相同的伺服器上，因此它們都共用相同的硬體資源，例如運算、記憶體和聯網。

在生產環境中，通常每個伺服器僅使用單一 SQL Server 執行個體，因此「忙碌」執行個體不會過度使用共用硬體資源。為每個 SQL Server 執行個體提供自己的作業系統，以及自己的資源，比依賴資源控管來得好。對於需要大量 RAM 和 CPU 資源的高效能 SQL Server 工作負載尤其如此。

不過，並非所有 SQL Server 工作負載都會使用大量資源。例如，某些組織會為其客戶指派自己的專用 SQL Server 執行個體，以用於合規或安全目的。對於較小型的用戶端或通常非作用中的用戶端，這表示以最少的資源執行 SQL Server 執行個體。

如 [Microsoft SQL Server 2019：授權指南](https://download.microsoft.com/download/e/2/9/e29a9331-965d-4faa-bd2e-7c1db7cd8348/SQL_Server_2019_Licensing_guide.pdf)中所述，每個執行 SQL Server 的伺服器必須至少考慮四個 CPU 授權。這表示即使您執行的伺服器只有兩個 vCPUs，您仍然必須為四個 vCPUs 授權 SQL Server。如果您使用 [SQL Server Standard 版，則根據 Microsoft 的公有 SQL Server 定價](https://www.microsoft.com/en-us/sql-server/sql-server-2022-pricing)差異為 \$13，945。對於使用最少資源搭配單一 SQL Server 執行個體執行多個伺服器的組織，必須授權未使用資源的合併成本可能相當龐大。

## 成本最佳化案例
<a name="consolidate-instances-cost-opt-scenario"></a>

本節探討的範例案例，會將執行四個 Windows Server 伺服器之間的差異與同時執行多個 SQL Server 執行個體的單一大型 Windows Server 伺服器進行比較。

如果每個 SQL Server 執行個體只需要兩個 vCPUs和 8 GB RAM，除了每小時運算成本 0.096 美元之外，每部伺服器的總成本為 SQL Server 授權 7，890 美元。


****  

| EC2 執行個體 | vCPUs | RAM | Price | 要授權vCPUs  | SQL Server 授權總成本 | 
| --- | --- | --- | --- | --- | --- | 
| m6i.large | 2 | 8 | 0.096 | 4 | 7，890 美元 | 

將此擴展到四個伺服器，SQL Server 授權的總成本為 31，560 USD，每小時運算成本為 0.384 USD。


****  

| EC2 執行個體 | vCPUs | RAM | Price | 要授權vCPUs  | SQL Server 授權總成本 | 
| --- | --- | --- | --- | --- | --- | 
| 4 倍 m6i.large | 2 | 32 | 0.384 | 16 | 31，560 美元 | 

如果您將所有四個 SQL Server 執行個體合併到單一 EC2 執行個體，則運算資源和運算的總量會保持不變。不過，透過移除不必要的 SQL Server 授權成本，您可以將執行工作負載的總成本降低 15，780 美元。


****  

| EC2 執行個體 | vCPUs | RAM | Price | 要授權vCPUs  | SQL Server 授權總成本 | 
| --- | --- | --- | --- | --- | --- | 
| m6i.2xlarge | 8 | 32 | 0.384 | 8 | 15，780 美元 | 

**注意**  
在上述表格中，運算成本會顯示 `us-east-1`區域中執行 Windows Server 的 Amazon EC2 伺服器每小時隨需定價。SQL Server Standard Edition 授權成本是指 [Microsoft 的公有 SQL Server 定價](https://www.microsoft.com/en-us/sql-server/sql-server-2022-pricing)。

## 成本最佳化建議
<a name="consolidate-instances-cost-opt-rec"></a>

如果您正在考慮合併 SQL Server 執行個體，最大的考量是您要合併的每個執行個體的資源耗用。請務必長期取得效能指標，以便更深入了解每個伺服器上的工作負載模式。資源耗用量監控的一些常見工具包括 [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch-metrics-basic-detailed.html)、[Windows Performance Monitor](https://techcommunity.microsoft.com/t5/ask-the-performance-team/windows-performance-monitor-overview/ba-p/375481) (perfmon) 和 SQL Server 的[原生監控工具](https://learn.microsoft.com/en-us/sql/relational-databases/performance/performance-monitoring-and-tuning-tools?view=sql-server-ver16)。

我們建議您在分析 SQL Server 工作負載是否可以合併以使用相同的伺服器資源，而不會互相干擾時，考慮下列問題：
+ 穩定狀態期間會耗用哪些資源 (CPU、記憶體和網路頻寬）？
+ 尖峰期間會耗用哪些資源 (CPU、記憶體和網路頻寬）？
+ 峰值發生的頻率為何？ 峰值是否一致？
+ 一個伺服器的資源峰值是否與另一個伺服器的資源峰值一致？
+ SQL Server 使用的儲存 IOPS 和輸送量是多少？

如果您想要繼續進行合併 SQL Server 執行個體的計劃，請參閱 Cloud Operations & Migrations 部落格上的 AWS [在一個 Amazon EC2 執行個體上執行多個 SQL Server 執行個體](https://aws.amazon.com/blogs/mt/run-multiple-instances-sql-server-on-one-amazon-ec2-instance/)文章。此文章提供如何在 SQL Server 中進行組態變更以新增其他執行個體的指示。開始之前，請考慮在相同伺服器上安裝多個執行個體時的次要差異：
+ 預設 SQL Server 資料庫執行個體名為 `MSSQLSERVER`，並使用連接埠 1433。
+ 安裝在相同伺服器上的每個額外執行個體都是「已命名」的資料庫執行個體。
+ 每個具名執行個體都有唯一的執行個體名稱和唯一的連接埠。
+ [SQL Server 瀏覽器](https://learn.microsoft.com/en-us/sql/tools/configuration-manager/sql-server-browser-service?view=sql-server-ver16)必須執行 來協調指定執行個體的流量。
+ 每個執行個體都可以針對資料庫資料檔案和個別登入使用不同的位置。
+ SQL Server [最大伺服器記憶體設定](https://learn.microsoft.com/en-us/sql/database-engine/configure-windows/server-memory-server-configuration-options?view=sql-server-ver16)必須根據每個執行個體的效能需求進行設定，其總和也為基礎作業系統保留足夠的記憶體。
+ 您可以使用 SQL Server [原生備份和還原](https://learn.microsoft.com/en-us/sql/relational-databases/backup-restore/back-up-and-restore-of-sql-server-databases?view=sql-server-ver16)功能，或[AWS DMS](https://aws.amazon.com/blogs/database/consolidate-data-from-identical-sql-server-databases-into-a-single-amazon-rds-for-sql-server-database-using-aws-dms/)用於遷移或整合。

## 其他資源
<a name="consolidate-instances-resources"></a>
+ [SQL Server 授權資料表](https://download.microsoft.com/download/0/5/c/05c60185-ebdd-4472-895a-3d8e8da55682/SQL_Server_2019_Licensing_Datasheet.pdf) (AWS 雲端操作與遷移部落格）
+ [SQL Server 多執行個體設定部落格文章](https://aws.amazon.com/blogs/mt/run-multiple-instances-sql-server-on-one-amazon-ec2-instance/) (AWS Cloud Operations & Migrations 部落格）