セッションのログインおよびランタイム属性に基づき、SET_CONSUMER_GROUP_MAPPINGプロシージャは、セッションとリソースグループのマッピング関係を追加、削除、または変更するために使用され、リソースのきめ細かい管理を実現します。
構文
DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(
attribute IN VARCHAR2,
value IN VARCHAR2,
consumer_group IN VARCHAR2 DEFAULT NULL
);
パラメータ説明
パラメータ |
説明 |
|---|---|
| attribute | 追加または変更するマッピングプロパティ。現在のバージョンでは、USER(データベースのユーザー名)、COLUMN プロパティ値、および FUNCTION のみをサポートしています。OceanBaseデータベースのバックグラウンドで実行されるメジャーコンパクション、ダンプ、バックアップ・リカバリ、データ補完などのタスクは、マクロレベルではユーザー領域に属さず、タスク実行時に他のユーザーやタスクのCPU、I/Oリソースを占有する可能性が高いため、OceanBaseデータベースの異なるバックグラウンドタスクに対して FUNCTION マッピング関係を指定することができます。これにより、バックグラウンドタスクのリソースを対応するリソースグループ内に制限することが可能です。 |
| value | 一致するプロパティ値。絶対マッピングと正規表現を含みます。 |
| consumer_group | マッピングの使用グループ名。NULL の場合、マッピングを削除します。 |
使用方法
- 指定されたプロパティと値にマッピングが存在しない場合、指定されたユーザーグループを使用するマッピングが作成されます。
- 指定されたプロパティと値のマッピングが既に存在する場合、そのマッピングのユーザーグループは指定されたユーザーグループに更新されます。
consumer_groupパラメータがNULLの場合、指定されたプロパティと値からなるマッピングはすべて削除されます。
次の表は、OceanBaseデータベースにおける事前定義されたFUNCTIONリソースグループのマッピングルールです。DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPINGプロシージャを使用して これらのマッピングルールを変更または削除します。
- USER: 指定されたユーザーのすべてのセッションをターゲットリソースグループにマッピングします。
- COLUMN:特定のテーブルフィールドの値(例:
t2.c3 = 3 for user1)に対してリソースグループをマッピングし、よりきめ細かいリソース分離を実現します。 - FUNCTION:OceanBaseのバックグラウンドタスク(メジャーコンパクション、バックアップ、統計情報収集など)に対してリソースグループをマッピングできます。次の表は、組み込みFUNCTIONタイプとその説明です:
プロパティ名 |
値 |
説明 |
|---|---|---|
| FUNCTION | COMPACTION_HIGH | Mini MergeおよびDDL KV Mergeタスク |
| FUNCTION | COMPACTION_MID | Minor Mergeタスク |
| FUNCTION | COMPACTION_LOW | Major Mergeタスク |
| FUNCTION | HA_HIGH | レプリケーション、Rebuild、復元タスク |
| FUNCTION | HA_MID | 移行タスク |
| FUNCTION | HA_LOW | バックアップ、バックアップのクリーンアップなどのタスク |
| FUNCTION | DDL | 一意インデックスの検証、列の削除、データの補完操作 |
| FUNCTION | DDL_HIGH | DDL MemTableのダンプ操作 |
| FUNCTION | CLOG_HIGH | clogログコミットタスク |
| FUNCTION | OPT_STATS | 統計情報収集タスク |
| FUNCTION | MVIEW | マテリアライズドビューの増分更新、MLOG PurgeのI/O、CPUリソース使用操作 |
例
1. ユーザーによるマッピング
CALL DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(
attribute => 'USER',
value => 'user1',
consumer_group => 'group1'
);
2. テーブルフィールド条件によるマッピング
CALL DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(
attribute => 'COLUMN',
value => 't2.c3 = 3 for user1',
consumer_group => 'group1'
);
3. バックグラウンドタスクタイプによるマッピング
CALL DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(
attribute => 'FUNCTION',
value => 'COMPACTION_HIGH',
consumer_group => 'group2'
);