共用方式為


ALTER RESOURCE GOVERNOR (Transact-SQL)

適用於:SQL ServerAzure SQL 受控執行個體

此語句會執行下列資源管理員動作:

  • 啟用或停用資源管理員。
  • 在執行 CREATE | ALTER | DROP WORKLOAD GROUPCREATE | ALTER | DROP RESOURCE POOLCREATE | ALTER | DROP EXTERNAL RESOURCE POOL 語句時,套用指定的組態變更。
  • 設定傳入會話的分類。
  • 重設工作負載群組和資源集區統計資料。
  • 設定每個磁碟區的佇列 I/O 作業上限。

Transact-SQL 語法慣例

語法

ALTER RESOURCE GOVERNOR
    { RECONFIGURE
          [ WITH
                ( [ CLASSIFIER_FUNCTION = { schema_name.function_name | NULL } ]
                  [ [ , ] MAX_OUTSTANDING_IO_PER_VOLUME = value ]
                )
          ]
      | DISABLE
      | RESET STATISTICS
    }
[ ; ]

引數

RECONFIGURE

未啟用資源管理員時,RECONFIGURE 啟用資源管理員。 開啟資源管理員會產生下列結果:

  • 如果有任何分類器函式,則會針對新的會話執行,並將其指派給工作負載群組。
  • 接受並強制執行資源管理員設定中指定的資源保留和限制。
  • 啟用資源管理員之前存在的要求,可能會受到啟用資源管理員時所做的任何組態變更所影響。

啟用資源管理員時,RECONFIGURE 套用 CREATE | ALTER | DROP WORKLOAD GROUPCREATE | ALTER | DROP RESOURCE POOLCREATE | ALTER | DROP EXTERNAL RESOURCE POOL 語句在先前使用 RECONFIGURE 或上次重新啟動Database Engine之後所做的任何組態變更。

重要

ALTER RESOURCE GOVERNOR RECONFIGURE 必須針對任何資源管理員組態變更執行,才會生效。

CLASSIFIER_FUNCTION = { schema_name.function_name | NULL }

註冊 schema_name.function_name 所指定的分類函數。 此函式會將每個新會話分類,並將會話指派給工作負載群組。 使用 NULL 時,新的會話會自動指派給 default 工作負載群組。

MAX_OUTSTANDING_IO_PER_VOLUME = value

適用於:SQL Server 2014 (12.x) 和更新版本。

設定每一個磁碟區已排入佇列的最大 I/O 作業量。 這些 I/O 作業可以是任何規模的讀取或寫入。 MAX_OUTSTANDING_IO_PER_VOLUME 的最大值為100。 值不是百分比。 這項設定是設計來針對磁碟區的 IO 特性調整 IO 資源管理。 它提供系統層級的安全檢查,可讓 Database Engine 符合為資源集區指定的 MIN_IOPS_PER_VOLUME 設定,即使其他集區將 MAX_IOPS_PER_VOLUME 設定設為無限制也一樣。 如需詳細資訊,請參閱 CREATE RESOURCE POOL

DISABLE

停用資源管理員。 停用資源管理員會產生下列結果:

  • 不會執行分類器函式。
  • 所有新的用戶會話都會自動分類為 default 工作負載群組。
  • 系統會話會分類為 internal 工作負載群組。
  • 所有現有的工作負載群組和資源集區設定都會重設為預設值。 達到限制時,不會引發任何事件。
  • 一般系統監視不會受到影響。
  • 您可以進行資源管理員設定變更,但變更在啟用資源管理員之前不會生效。
  • 重新啟動Database Engine之後,資源管理員不會載入其組態,而是只使用 default 和資源集區 internal 工作負載群組和資源集區。

RESET STATISTICS

重設在 sys.dm_resource_governor_workload_groupssys.dm_resource_governor_resource_pools中公開之所有工作負載群組和資源集區的統計數據。

備註

ALTER RESOURCE GOVERNOR 無法在使用者交易內使用。

RECONFIGURE 參數是資源管理員語法的一部分。 它不應該與 RECONFIGURE混淆,這是個別的 DDL 語句。

如需詳細資訊,請參閱 Resource Governor

權限

需要 CONTROL SERVER 許可權。

範例

啟用資源管理員

安裝 SQL Server 時,會停用資源管理員。 下列範例會啟用資源管理員。 執行語句之後,會啟用資源管理員,並使用內建的工作負載群組和資源集區。

ALTER RESOURCE GOVERNOR RECONFIGURE;

將新的工作階段指派給預設群組

下列範例會將所有新的工作階段指派給 default 工作負載群組,方法是從資源管理員設定中移除任何現有的分類器函式。 當沒有任何函式指定為分類函數時,所有新的用戶會話都會指派給 default 工作負載群組。 這項變更僅會套用至新的工作階段。 現有的會話不會受到影響。

ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = NULL);
ALTER RESOURCE GOVERNOR RECONFIGURE;

建立和註冊分類器函式

下列範例會在 master 資料庫中建立名為 dbo.rg_classifier 的分類函數。 這個函數會根據使用者名稱或應用程式名稱將每個新的工作階段分類,然後將工作階段要求和查詢指派到特定的工作負載群組。 沒有對應到指定的使用者或應用程式名稱的工作階段會指派到預設的工作負載群組。 接著會註冊此分類函數並套用組態變更。

USE master;
GO

CREATE FUNCTION dbo.rg_classifier()
RETURNS sysname
WITH SCHEMABINDING
AS
BEGIN

-- Declare the variable for the function return value.
DECLARE @grp_name AS sysname;

-- If the login name is 'sa', classify the session into the groupAdmin workload group
IF (SUSER_NAME() = 'sa')
  SET @grp_name = 'groupAdmin';

-- Classify SSMS sessions into the groupAdhoc workload group
ELSE IF UPPER(APP_NAME()) LIKE '%MANAGEMENT STUDIO%'
  SET @grp_name = 'groupAdhoc';

-- Classify SSRS sessions into groupReports workload group
ELSE IF UPPER(APP_NAME()) LIKE '%REPORT SERVER%'
  SET @grp_name = 'groupReports';

-- Otherwise, classify the session into the default workload group
ELSE
  SET @grp_name = 'default';

-- Return the name of the workload group
RETURN @grp_name;

END;
GO

-- Register the classifier function and update resource governor configuration
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = dbo.rg_classifier);
ALTER RESOURCE GOVERNOR RECONFIGURE;

重設資源管理員統計數據

下列範例會重設所有的工作負載群組和資源集區統計資料。

ALTER RESOURCE GOVERNOR RESET STATISTICS;

設定MAX_OUTSTANDING_IO_PER_VOLUME設定

下列範例會將 MAX_OUTSTANDING_IO_PER_VOLUME 設定為 20 個 IO。

ALTER RESOURCE GOVERNOR WITH (MAX_OUTSTANDING_IO_PER_VOLUME = 20);