共用方式為


資源管理員

適用於:SQL ServerAzure 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。 始終存在兩個內建資源集區,internaldefault。 資源管理員也支援使用者定義的資源集區。 視設定而定,資源集區中的資源可以與其他集區共用或保留。 如需詳細資訊,請參閱 資源管理員資源集區
  • 工作負載群組。 工作負載群組代表一種將會話以相同方式分類的容器。 工作負載群組允許對會話和請求的資源耗用進行整體監控,並定義請求政策。 每個工作負載群組各在一個資源集區中。 兩個內建工作負載群組,internaldefault,一律存在,並分別對應至 internaldefault 資源集區。 資源管理員也支援用戶定義的工作負載群組。 如需詳細資訊,請參閱 Resource Governor 工作負載群組
  • 分類。 分類程式會使用自定義分類邏輯,根據會話的屬性,例如登入名稱或程式名稱,將傳入會話指派給工作負載群組。 會話分類為工作負載群組之後,在該會話上執行的所有要求都會受限於工作負載組策略。 您可以撰寫稱為分類函數的純量使用者定義函式來定義分類邏輯。 如需詳細資訊,請參閱 Resource governor 分類器函式

注意

資源管理員不會對 專用系統管理員連線 (DAC)施加任何控制。 DAC 查詢一律會在 internal 工作負載群組和資源集區中執行。

下圖顯示資料庫引擎內資源管理員元件及其彼此的關係。 從處理的觀點而言,簡化的流程如下所示:

  • 有一個工作階段 (第 n 工作階段 1) 的傳入連接。
  • 會話已被列為機密。
  • 根據分類結果,會將工作階段分配至某個工作負載群組,例如 Group 4
  • 工作負載群組會在所有請求上強制執行其政策,並使用與其相關聯的資源集區,例如 Pool 2
  • 資源集區會提供和限制應用程式所需的資源,例如,Application 3

圖表,其中顯示資源管理器元件和傳入會話的處理。

資源管理員工作

工作描述 文章
檢視組態範例 教學課程:資源控管器組態範例和最佳實務
啟用資源管理員 啟用資源管理員
停用資源管理員 停用資源管理器
建立、變更及刪除資源集區 資源管理資源集區
建立、改變、移動和卸除工作負載群組 Resource Governor 工作負載群組
建立及測試分類器使用者定義函式 Resource Governor 分類器函式
使用範本設定資源管理員 使用範本 設定資源管理員
檢視資源調控器屬性 檢視和修改資源管理員屬性
設定空間耗用量的限制tempdb Tempdb 空間資源治理