CREATE WORKLOAD POLICY を作成
説明
特定の条件を満たすクエリに対して対応するアクションを実行するWorkload Policyを作成します。
構文
CREATE WORKLOAD POLICY [ IF NOT EXISTS ] <workload_policy_name>
CONDITIONS(<conditions>) ACTIONS(<actions>)
[ PROPERTIES (<properties>) ]
必須パラメータ
<workload_policy_name>
Workload Policyの名前。
- be_scan_rows: 単一のBEプロセス内でSQLクエリによってスキャンされた行数。SQLクエリが複数のBE上で並行して実行される場合、これらの並行実行の累積値となります。
- be_scan_bytes: 単一のBEプロセス内でSQLクエリによってスキャンされたバイト数。SQLクエリが複数のBE上で並行して実行される場合、これらの並行実行の累積値となります(バイト単位)。
- query_time: 単一のBEプロセス上でのSQLクエリの実行時間(ミリ秒単位)。
- query_be_memory_bytes(バージョン2.1.5からサポート): 単一のBEプロセス内でSQLクエリによって使用されるメモリ量。SQLクエリが複数のBE上で並行して実行される場合、これらの並行実行の累積値となります(バイト単位)。
<actions>
- set_session_variable: このアクションはset session variable文を実行します。同一ポリシー内で複数のset_session_variableアクションを指定でき、1つのポリシー内で複数のセッション変数変更文を実行することができます。
- cancel_query: クエリをキャンセルします。
オプションパラメータ
- enabled: trueまたはfalseの値を取り、デフォルト値はtrueです。trueに設定するとポリシーが有効になり、falseに設定するとポリシーが無効になります。
- priority: 0から100の範囲の整数値で、デフォルト値は0です。これはポリシーの優先度を表します。値が高いほど優先度が高くなります。複数のポリシーがマッチした場合、最も優先度の高いポリシーが選択されます。
- workload_group: 現在、ポリシーは1つのworkload groupにバインドでき、このポリシーが特定のworkload groupにのみ適用されることを示します。デフォルトは空で、すべてのクエリに適用されることを意味します。
アクセス制御要件
最低でもADMIN_PRIV権限が必要です。
例
- クエリ時間が3秒を超えるすべてのクエリをkillする新しいWorkload Policyを作成します。
create workload policy kill_big_query conditions(query_time > 3000) actions(cancel_query)
- デフォルトで有効にならない新しいWorkload Policyを作成します。
create workload policy kill_big_query conditions(query_time > 3000) actions(cancel_query) properties('enabled'='false')