

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

# 使用 RDS for SQL Server 的 Microsoft SQL Server 資源長
<a name="Appendix.SQLServer.Options.ResourceGovernor"></a>

Resource Governor 是一種 SQL Server Enterprise Edition 功能，可讓您精確控制執行個體資源。它可讓您設定工作負載如何使用 CPU、記憶體和實體 I/O 資源的特定限制。透過資源長，您可以：
+ 透過管理不同工作負載共用執行個體資源的方式，防止多租戶環境中的資源統一
+ 為不同的使用者和應用程式設定特定資源限制和優先順序，以提供可預測的效能

您可以在現有或新的 RDS for SQL Server 資料庫執行個體上啟用資源長。

資源長使用三個基本概念：
+ **資源集區** - 管理執行個體實體資源 (CPU、記憶體和 I/O) 的容器。您有兩個內建集區 （內部和預設），而且可以建立其他自訂集區。
+ **工作負載群組** - 具有類似特性之資料庫工作階段的容器。每個工作負載群組都屬於資源集區。您有兩個內建工作負載群組 （內部和預設），而且可以建立其他自訂工作負載群組。
+ **分類** - 根據使用者名稱、應用程式名稱、資料庫名稱或主機名稱，決定哪些工作負載群組處理傳入工作階段的程序。

如需 SQL Server 中資源主管功能的其他詳細資訊，請參閱 Microsoft 文件中的[資源主管](https://learn.microsoft.com/en-us/sql/relational-databases/resource-governor/resource-governor?view=sql-server-ver16)。

**Contents**
+ [支援的版本和區域](#ResourceGovernor.SupportedVersions)
+ [限制與建議](#ResourceGovernor.Limitations)
+ [為您的 RDS for SQL Server 執行個體啟用 Microsoft SQL Server 資源長](ResourceGovernor.Enabling.md)
  + [建立 `RESOURCE_GOVERNOR` 的選項群組](ResourceGovernor.Enabling.md#ResourceGovernor.OptionGroup)
  + [將 `RESOURCE_GOVERNOR` 選項新增至選項群組](ResourceGovernor.Enabling.md#ResourceGovernor.Add)
  + [將選項群組關聯至您的資料庫執行個體](ResourceGovernor.Enabling.md#ResourceGovernor.Apply)
+ [針對 RDS for SQL Server 執行個體使用 Microsoft SQL Server 資源長](ResourceGovernor.Using.md)
  + [管理資源集區](ResourceGovernor.Using.md#ResourceGovernor.ManageResourcePool)
    + [建立資源集區](ResourceGovernor.Using.md#ResourceGovernor.CreateResourcePool)
    + [變更資源集區](ResourceGovernor.Using.md#ResourceGovernor.AlterResourcePool)
    + [捨棄資源集區](ResourceGovernor.Using.md#ResourceGovernor.DropResourcePool)
  + [管理工作負載群組](ResourceGovernor.Using.md#ResourceGovernor.ManageWorkloadGroups)
    + [建立工作負載群組](ResourceGovernor.Using.md#ResourceGovernor.CreateWorkloadGroup)
    + [修改工作負載群組](ResourceGovernor.Using.md#ResourceGovernor.AlterWorkloadGroup)
    + [捨棄工作負載群組](ResourceGovernor.Using.md#ResourceGovernor.DropWorkloadGroup)
  + [建立和註冊分類器函數](ResourceGovernor.Using.md#ResourceGovernor.ClassifierFunction)
  + [捨棄分類器函數](ResourceGovernor.Using.md#ResourceGovernor.DropClassifier)
  + [取消註冊分類器函數](ResourceGovernor.Using.md#ResourceGovernor.DeregisterClassifier)
  + [重設統計資料](ResourceGovernor.Using.md#ResourceGovernor.ResetStats)
  + [資源長組態變更](ResourceGovernor.Using.md#ResourceGovernor.ConfigChanges)
  + [將 TempDB 繫結至資源集區](ResourceGovernor.Using.md#ResourceGovernor.BindTempDB)
  + [從資源集區取消繫結 TempDB](ResourceGovernor.Using.md#ResourceGovernor.UnbindTempDB)
  + [清理資源總監](ResourceGovernor.Using.md#ResourceGovernor.Cleanup)
+ [多可用區域部署考量](#ResourceGovernor.Considerations)
+ [僅供讀取複本的考量事項](#ResourceGovernor.ReadReplica)
+ [使用 RDS for SQL Server 執行個體的系統檢視來監控 Microsoft SQL Server 資源長](ResourceGovernor.Monitoring.md)
  + [資源集區執行時間統計資料](ResourceGovernor.Monitoring.md#ResourceGovernor.ResourcePoolStats)
+ [停用 RDS for SQL Server 執行個體的 Microsoft SQL Server 資源長](ResourceGovernor.Disabling.md)
+ [在 RDS for SQL Server 上設定資源長的最佳實務](ResourceGovernor.BestPractices.md)

## 支援的版本和區域
<a name="ResourceGovernor.SupportedVersions"></a>

在提供 RDS for SQL Server 的所有 AWS 區域 中，Amazon RDS 支援下列 SQL Server 版本的資源長：
+ SQL Server 2022 開發人員和企業版本
+ SQL Server 2019 Enterprise Edition
+ SQL Server 2017 Enterprise Edition
+ SQL Server 2016 Enterprise Edition

## 限制與建議
<a name="ResourceGovernor.Limitations"></a>

下列限制和建議適用於資源長：
+ 版本和服務限制：
  + 僅適用於 SQL Server Enterprise Edition。
  + 資源管理僅限於 SQL Server 資料庫引擎。不支援 Analysis Services、整合服務和 Reporting Services 的資源主管。
+ 組態限制：
  + 必須對所有組態使用 Amazon RDS 預存程序。
  + 不支援原生 DDL 陳述式和 SQL Server Management Studio GUI 組態。
+ 資源集區參數：
  + `rds_` 不支援以 開頭的集區名稱。
  + 不允許修改內部和預設資源集區。
  + 對於使用者定義的資源集區，不支援下列資源集區參數：
    + `MIN_MEMORY_PERCENT`
    + `MIN_CPU_PERCENT`
    + `MIN_IOPS_PER_VOLUME`
    + `AFFINITY`
+ 工作負載群組參數：
  + `rds_` 不支援以 開頭的工作負載群組名稱。
  + 不允許修改內部工作負載群組。
  + 針對預設工作負載群組：
    + 只有 `REQUEST_MAX_MEMORY_GRANT_PERCENT` 參數可以修改。
    + 對於預設工作負載群組， `REQUEST_MAX_MEMORY_GRANT_PERCENT` 必須介於 1 到 70 之間。
    + 所有其他參數都已鎖定，無法變更。
  + 使用者定義的工作負載群組允許修改所有參數。
+ 分類器函數限制：
  + 分類器函數會根據指定的條件 （使用者名稱、資料庫、主機或應用程式名稱），將連線路由至自訂工作負載群組。
  + 支援最多兩個具有各自路由條件的使用者定義工作負載群組。
  + 將條件與每個群組中的`AND`條件結合。
  + 每個工作負載群組至少需要一個路由條件。
  + 僅支援上述分類方法。
  + 函數名稱必須以 開頭`rg_classifier_`。
  + 如果沒有條件相符，則預設群組指派。

## 多可用區域部署考量
<a name="ResourceGovernor.Considerations"></a>

RDS for SQL Server 會將資源長複寫到多可用區部署中的次要執行個體。您可以驗證上次與次要執行個體同步修改後的新資源總管。

使用下列查詢來檢查複寫`last_sync_time`的 ：

```
SELECT * from msdb.dbo.rds_fn_server_object_last_sync_time();
```

在查詢結果中，如果同步時間超過資源長更新或建立時間，則資源長會與次要同步。

若要執行手動資料庫容錯移轉以確認資源長複寫，請等待 `last_sync_time` 先更新。然後，繼續進行異地同步備份容錯移轉。

## 僅供讀取複本的考量事項
<a name="ResourceGovernor.ReadReplica"></a>
+ 對於與來源資料庫執行個體位於相同區域的 SQL Server 複本，請使用與來源相同的選項群組。選項群組的變更會立即傳播至複本，無論其維護時段為何。
+ 當您建立 SQL Server 跨區域複本時，RDS 會為其建立專用選項群組。
+ 您無法從專用選項群組中移除 SQL Server 跨區域複本。其他資料庫執行個體都不能使用 SQL Server 跨區域複本的專用選項群組。
+ 資源管理員選項是未複寫的選項。您可以從專用選項群組新增或移除下列非複寫選項：
+ 當您提升 SQL Server 跨區域僅供讀取複本時，提升的複本就像其他 SQL Server 資料庫執行個體一樣運作，包括管理其選項。

**注意**  
在僅供讀取複本上使用 Resource Governor 時，您必須手動確保在將選項新增至選項群組之後，已在僅供讀取複本上使用 Amazon RDS 預存程序設定資源 Governor。資源管理員組態不會自動複寫到僅供讀取複本。此外，僅供讀取複本上的工作負載通常與主要執行個體不同。因此，建議您根據您的工作負載和執行個體類型，在複本上套用資源組態。您可以在僅供讀取複本上獨立執行這些 Amazon RDS 預存程序，以在僅供讀取複本上設定資源長。