適用於:SQL Server
Azure SQL 受控執行個體
您可以使用資源管理員來管理 Database Engine 資源耗用量,並針對使用者工作負載強制執行原則。 資源管理員可讓您保留或限制用戶查詢工作負載可以使用的CPU、記憶體和實體I/O數量。 您也可以修改每個查詢的資源耗用量行為,例如平行處理原則的程度或記憶體授與的大小。
從 SQL Server 2025(17.x)開始,你可以:
- 在企業版、企業版開發者版、標準版和標準開發者版中使用資源管理員。 在先前版本中,資源管理者僅在企業版和開發者版中提供。 欲了解更多資訊,請參閱 SQL Server 2025 的新內容。
- 使用 Resource Governer 來強制限制應用程式或使用者工作負載所佔用的總空間。
tempdb如需詳細資訊,請參閱 Tempdb 空間資源治理。
如需設定和監視範例,以及了解資源管理員最佳做法,請參閱 教學課程:資源管理員組態範例和最佳做法。
注意
雖然 Azure SQL Database 會利用資源管理員(以及其他技術)來管理資源,但不支援 Azure SQL Database 中的資源集區和工作負載群組的用戶設定。
Azure Synapse Analytics 透過 工作負載分類功能,具備不同於其他的資源治理行為實作。
資源管理員的優點
資源控制器可讓您透過為請求指定資源耗用的保留和限制,來管理 Database Engine 的工作負載和資源。 在資源管理員的上下文中,工作負載是一組可以且應該被視為單一實體的查詢(請求)。 例如,特定應用程式執行的所有查詢都可能會被視為工作負載。 雖然這不是必要條件,但工作負載的資源使用模式越統一,您從資源管理員獲得的好處就越多。
如果相同伺服器上有多個不同的工作負載,資源管理員可讓您根據您指定的限制,以不同的方式配置資源給不同的工作負載。
資源管理員支援的一些使用案例如下:
- 在服務多個用戶端工作負載的 SQL Server 單一執行個體上,提供多組織用戶管理和資源隔離。 也就是說,您可以將伺服器上的可用資源分割給各工作負載,將工作負載競爭資源時所發生的問題減到最少。
- 提供可預測的效能並支援服務等級協議(SLA),以應對多工作負載和多用戶環境中的工作負載。
- 隔離和限制失控的查詢,或限制 I/O 密集作業的 I/O 資源,這些作業可能會使 I/O 子系統飽和,並對其他工作負載造成負面影響。
- 為資源使用量退款新增更細緻的資源追蹤,併為伺服器資源的取用者提供可預測的計費。
互作性和限制
- 資源管理員可以搭配 AlwaysOn 可用性群組 和 故障轉移叢集實例使用。 適用下列考慮:
- 在 SQL Server 中使用時,必須在裝載可用性群組的每個 SQL Server 實例上設定資源管理員。 資源管理員設定不會從主要可用性群組複本傳播到次要複本。 建議您針對裝載可用性復本的所有 SQL Server Database Engine 實例使用相同的資源管理員組態。 這可確保在可用性群組故障轉移發生時的一致行為。
- 在 Azure SQL 受控實例中使用時,資源管理員組態會從主要復本傳播到所有次要複本,因為
master主要複本的資料庫會復寫到所有次要複本。 這包括高可用性和地理複製次要副本。 如需詳細資訊,請參閱 資源管理員。 - 如果您使用包含的可用性群組,請參閱 與其他功能的互動 以取得詳細資訊。
- 資源管理僅限於 SQL Server 資料庫引擎。 資源主控程序無法應用於分析服務、整合服務和報表服務。
- 資源管理器不會提供在多個 SQL Server 實例之間進行工作負載監視或管理。
- 非常短的查詢,例如某些 OLTP 工作負載中的查詢,可能不足以持續使用 CPU 以套用 CPU 頻寬控制。 這可能會扭曲 CPU 使用量統計數據,並限制 CPU 資源控管的有效性。
- 管理實體 I/O 的能力僅適用於用戶作業,而不是系統工作。 系統工作會執行交易日誌、檢查點和惰性寫入程序 I/O。 資源控制器控管用戶端的實體讀取 I/O,但不控管系統工作所執行的寫入 I/O。
- 您無法修改
internal資源集區和工作負載群組的資源控管控件。
資源概念
下列三個概念是瞭解和使用資源管理員的基本概念:
-
資源集區。 資源集區代表伺服器實體資源的容器,例如 CPU、記憶體和 I/O。 始終存在兩個內建資源集區,
internal和default。 資源管理員也支援使用者定義的資源集區。 視設定而定,資源集區中的資源可以與其他集區共用或保留。 如需詳細資訊,請參閱 資源管理員資源集區。 -
工作負載群組。 工作負載群組代表一種將會話以相同方式分類的容器。 工作負載群組允許對會話和請求的資源耗用進行整體監控,並定義請求政策。 每個工作負載群組各在一個資源集區中。 兩個內建工作負載群組,
internal和default,一律存在,並分別對應至internal和default資源集區。 資源管理員也支援用戶定義的工作負載群組。 如需詳細資訊,請參閱 Resource Governor 工作負載群組。 - 分類。 分類程式會使用自定義分類邏輯,根據會話的屬性,例如登入名稱或程式名稱,將傳入會話指派給工作負載群組。 會話分類為工作負載群組之後,在該會話上執行的所有要求都會受限於工作負載組策略。 您可以撰寫稱為分類函數的純量使用者定義函式來定義分類邏輯。 如需詳細資訊,請參閱 Resource governor 分類器函式。
注意
資源管理員不會對 專用系統管理員連線 (DAC)施加任何控制。 DAC 查詢一律會在 internal 工作負載群組和資源集區中執行。
下圖顯示資料庫引擎內資源管理員元件及其彼此的關係。 從處理的觀點而言,簡化的流程如下所示:
- 有一個工作階段 (第
n工作階段 1) 的傳入連接。 - 會話已被列為機密。
- 根據分類結果,會將工作階段分配至某個工作負載群組,例如
Group 4。 - 工作負載群組會在所有請求上強制執行其政策,並使用與其相關聯的資源集區,例如
Pool 2。 - 資源集區會提供和限制應用程式所需的資源,例如,
Application 3。
資源管理員工作
| 工作描述 | 文章 |
|---|---|
| 檢視組態範例 | 教學課程:資源控管器組態範例和最佳實務 |
| 啟用資源管理員 | 啟用資源管理員 |
| 停用資源管理員 | 停用資源管理器 |
| 建立、變更及刪除資源集區 | 資源管理資源集區 |
| 建立、改變、移動和卸除工作負載群組 | Resource Governor 工作負載群組 |
| 建立及測試分類器使用者定義函式 | Resource Governor 分類器函式 |
| 使用範本設定資源管理員 | 使用範本 設定資源管理員 |
| 檢視資源調控器屬性 | 檢視和修改資源管理員屬性 |
設定空間耗用量的限制tempdb |
Tempdb 空間資源治理 |