ALTER RESOURCE GOVERNOR (Transact-SQL)

適用対象:SQL ServerAzure SQL Managed Instance

このステートメントは、次のリソース ガバナー アクションを実行します。

  • リソース ガバナーを有効または無効にします。
  • CREATE | ALTER | DROP WORKLOAD GROUP または CREATE | ALTER | DROP RESOURCE POOL または CREATE | ALTER | DROP EXTERNAL RESOURCE POOL ステートメントの実行時に指定された構成変更を適用します。
  • 受信セッションの分類を構成します。
  • ワークロード グループ統計とリソース プール統計のリセット
  • ディスク ボリュームあたりのキューに入る I/O 操作の最大数を設定します。

Note

Azure SQL Managed Instance でリソース ガバナーの構成を変更するには、プライマリ レプリカ上の master データベースのコンテキストにある必要があります。

Transact-SQL 構文表記規則

構文

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

引数

RECONFIGURE

リソース ガバナーが有効になっていない場合、RECONFIGURE はリソース ガバナーを有効にします。 リソース ガバナーを有効にすると、次の結果が得られます。

  • 分類子関数がある場合は、新しいセッションに対して実行され、ワークロード グループに割り当てられます。
  • リソース ガバナーの構成で指定されているリソースの予約と制限が優先され、適用されます。
  • リソース ガバナーを有効にする前に存在していた要求は、リソース ガバナーが有効になっているときに行われた構成変更の影響を受ける可能性があります。

リソース ガバナーが有効な場合、RECONFIGURE は、CREATE | ALTER | DROP WORKLOAD GROUP の前回の使用後、またはデータベース エンジンの最後の再起動後に、CREATE | ALTER | DROP RESOURCE POOL または CREATE | ALTER | DROP EXTERNAL RESOURCE POOL または RECONFIGURE ステートメントによって行われた構成変更を適用します。

重要

リソース ガバナーの構成変更を有効にするには、ALTER RESOURCE GOVERNOR RECONFIGURE を実行する必要があります。

CLASSIFIER_FUNCTION = { schema_name。function_name |NULL }

schema_name.function_name で指定された分類関数を登録します。 この関数は、すべての新しいセッションを分類し、そのセッションをワークロード グループに割り当てます。 NULL を使用すると、新しいセッションが default ワークロード グループに自動的に割り当てられます。

MAX_OUTSTANDING_IO_PER_VOLUME = 値

適用対象: SQL Server 2014 (12.x) 以降。

キューに登録される I/O 操作のディスク ボリュームごとの最大数を設定します。 これらの I/O 操作では、任意のサイズの読み取りや書き込みを行うことができます。 MAX_OUTSTANDING_IO_PER_VOLUME の最大値は 100 です。 値はパーセンテージではありません。 この設定は、ディスク ボリュームの IO 特性に合わせて IO リソース管理をチューニングするために設計されています。 システム レベルの安全性チェックを提供します。これにより、他のプールで MIN_IOPS_PER_VOLUME 設定が無制限に設定されている場合でも、データベース エンジンはリソース プールに対して指定された MAX_IOPS_PER_VOLUME 設定を満たすことができます。 詳細については、CREATE RESOURCE POOLを参照してください。

DISABLE

リソース ガバナーを無効にします。 リソース ガバナーを無効にすると、次の結果が得られます。

  • 分類子関数は実行されません。
  • 新しいユーザー セッションはすべて、default ワークロード グループに自動的に分類されます。
  • システム セッションは、internal ワークロード グループに分類されます。
  • ワークロード グループとリソース プールの既存の設定は、すべて既定値にリセットされます。 制限に達してもイベントは発生しません。
  • 通常のシステム監視は影響を受けません。
  • リソース ガバナー構成の変更を行うことができますが、リソース ガバナーが有効になるまで変更は有効になりません。
  • データベース エンジンを再起動すると、リソース ガバナーはその構成を読み込むのではなく、default と internal ワークロード グループとリソース プールのみを使用します。

リセット STATISTICS

sys.dm_resource_governor_workload_groups および sys.dm_resource_governor_resource_poolsで公開されているすべてのワークロード グループとリソース プールの統計情報をリセットします。

注釈

ALTER RESOURCE GOVERNOR は、ユーザー トランザクション内では使用できません。

RECONFIGURE パラメーターは、リソース ガバナー構文の一部です。 個別の DDL ステートメントである RECONFIGUREと混同しないでください。

詳細については、「リソース ガバナーの参照してください。

アクセス許可

CONTROL SERVER アクセス許可が必要です。

例

リソース ガバナーを有効にする

SQL Server をインストールすると、リソース ガバナーは無効になります。 次の例では、リソース ガバナーを有効にします。 ステートメントの実行後、リソース ガバナーが有効になり、組み込みのワークロード グループとリソース プールが使用されます。

ALTER RESOURCE GOVERNOR RECONFIGURE;

新しいセッションを既定のグループに割り当てる

次の例では、リソース ガバナー構成から既存の分類子関数を削除して、すべての新しいセッションを default ワークロード グループに割り当てます。 関数が分類子関数として指定されていない場合、すべての新しいユーザー セッションが default ワークロード グループに割り当てられます。 この変更は新しいセッションにのみ適用されます。 既存のセッションは影響を受けません。

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

分類子関数を作成して登録する

次の例では、dbo.rg_classifier データベースに master という名前の分類子関数を作成します。 この関数によって、ユーザー名またはアプリケーション名に基づいてすべての新しいセッションが分類され、セッションの要求とクエリが、指定されたワークロード グループに割り当てられます。 指定されたユーザー名またはアプリケーション名にマップされていないセッションは、既定のワークロード グループに割り当てられます。 次に分類関数が登録され、構成の変更が適用されます。

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);