説明
このステートメントは、システムテナントがストレージ層のメジャーコンパクションまたはダンプ(フリーズ)を開始するために使用します。手動コンパクションはテナントレベルとパーティションレベルをサポートし、手動ダンプはテナントレベル、ゾーンレベル、サーバーレベル、ログストリームレベル、およびパーティションレベルをサポートします。
構文
ALTER SYSTEM merge_action;
merge_action:
MAJOR FREEZE [tenant_list]
| MAJOR FREEZE TENANT [=] tenant_name TABLET_ID = tablet_id
| MINOR FREEZE [tenant_list | server_list | zone_list]
| MINOR FREEZE TENANT [=] tenant_name [LS [=] ls_id] [TABLET_ID = tablet_id]
| {SUSPEND | RESUME} MERGE [tenant_list]
| CLEAR MERGE ERROR [tenant_list]
tenant_list:
TENANT [=] { all | all_user | all_meta } | tenant_name [, tenant_name ...]
server_list:
SERVER [=] ('ip:port' [, 'ip:port'...])
zone_list:
ZONE [=] ('zone_name' [, 'zone_name' ...])
パラメータの説明
パラメータ |
説明 |
|---|---|
| MAJOR FREEZE | メジャーコンパクションを開始します。TENANT=allまたはTENANT=all_userを使用すると、すべてのユーザーテナント(システムテナントとMetaテナントを除く)をメジャーコンパクションできます。将来的にはall_userの使用を推奨し、allは廃止される予定です。TENANT=all_metaを使用すると、すべてのMetaテナントをメジャーコンパクションできます。また、TENANT=tenant_name [, tenant_name ...]を使用して、指定したテナントのみをメジャーコンパクションすることもできます。 |
| MINOR FREEZE | ダンプを開始します。 |
| {SUSPEND | RESUME} MERGE | メジャーコンパクションを一時停止または再開します。TENANT=allまたはTENANT=all_userを使用すると、すべてのテナント(システムテナントとMetaテナントを除く)のメジャーコンパクションを一時停止または再開できます。将来的にはall_userの使用を推奨し、allは廃止される予定です。TENANT=all_metaを使用すると、すべてのMetaテナントのメジャーコンパクションを一時停止または再開できます。また、TENANT=tenant_name [, tenant_name ...]を使用して、指定したテナントのメジャーコンパクションのみを一時停止または再開することもできます。 |
| CLEAR MERGE ERROR | メジャーコンパクションエラーのマークをクリアします。TENANT=allまたはTENANT=all_userを使用すると、すべてのテナント(システムテナントとMetaテナントを除く)のメジャーコンパクションエラーマークをクリアできます。将来的にはall_userの使用を推奨し、allは廃止される予定です。TENANT=all_metaを使用すると、すべてのMetaテナントのメジャーコンパクションエラーマークをクリアできます。また、TENANT=tenant_name [, tenant_name ...]を使用して、指定したテナントのメジャーコンパクションエラーマークのみをクリアすることもできます。 |
| tenant_name | 指定したテナントのメジャーコンパクションまたはダンプを実行します。 |
| TABLET_ID | 指定したパーティションのメジャーコンパクションまたはダンプを実行します。 |
| SERVER | 指定したサーバーでダンプを実行します。 |
| ZONE | 指定したゾーンでダンプを実行します。 |
| LS | 指定したログストレージでダンプを実行します。 |
注意点
パーティションとTabletは一対一で対応しています。パーティション単位のメジャーコンパクションを実行する際には、以下の点に注意してください。
- 対応するパーティションがテナント単位のメジャーコンパクションタスクを実行中の場合、パーティション単位のメジャーコンパクションを開始できません。
- 対応するパーティションが適応型スケジューリングのメジャーコンパクションタスクを実行中の場合、パーティション単位のメジャーコンパクションを開始できません。
- 対応するパーティションの複数レプリカが不整合状態にある場合、パーティション単位のメジャーコンパクションを開始できません。
- 対応するパーティションが復元中またはTransfer状態にある場合、パーティション単位のメジャーコンパクションを開始できません。
- メジャーコンパクションタスクが一時停止されている場合、パーティション単位のメジャーコンパクションを開始することはできません。
- パーティション単位のメジャーコンパクションは、同一パーティションの複数レプリカに対してMajor Compactionタスクを実行するものであり、CPUおよびディスクI/Oを消費します。パーティション単位のメジャーコンパクション操作を実行する前に、現在のテナントのリソース使用状況を検討する必要があります。また、パーティション単位のメジャーコンパクションコマンドが正常に実行された後は、CPUおよびI/Oの使用率が上昇します。
例
ストレージ層のメジャーコンパクションの例
システムテナントが自身のメジャーコンパクションを開始します。
obclient> ALTER SYSTEM MAJOR FREEZE;システムテナントがすべてのユーザーテナント(システムテナントとMetaテナントを除く)のメジャーコンパクションを開始します。
obclient> ALTER SYSTEM MAJOR FREEZE TENANT = all_user;
* システムテナントがすべてのMetaテナントのメジャーコンパクションを開始します。
```sql
obclient> ALTER SYSTEM MAJOR FREEZE TENANT = all_meta;
システムテナントが指定したテナント
tenant1とtenant2のメジャーコンパクションを開始します。obclient> ALTER SYSTEM MAJOR FREEZE TENANT = tenant1,tenant2;
ストレージ層のダンプの例
システムテナントが自身のダンプを開始します。
obclient> ALTER SYSTEM MINOR FREEZE;システムテナントがすべてのユーザーテナント(システムテナントとMetaテナントを除く)のダンプを開始します。
obclient> ALTER SYSTEM MINOR FREEZE TENANT = all_user;システムテナントがすべてのMetaテナントのダンプを開始します。
obclient> ALTER SYSTEM MINOR FREEZE TENANT = all_meta;システムテナントが指定したテナント
tenant1とtenant2のダンプを開始します。obclient> ALTER SYSTEM MINOR FREEZE TENANT = tenant1,tenant2;システムテナントが指定したテナント
tenant1の指定したパーティションのダンプを開始します。obclient> ALTER SYSTEM MINOR FREEZE tenant = tenant1 tablet_id = 1100611139453887;システムテナントが指定したOBServerのダンプを開始します。
obclient> ALTER SYSTEM MINOR FREEZE SERVER = ('10.XXX.XXX.XXX:2882');システムテナントが指定したテナントの指定したログストリームのダンプを開始します。
obclient> ALTER SYSTEM MINOR FREEZE tenant = t1 LS 1;システムテナントが指定したテナントの指定したログストリーム内の指定したパーティションのダンプを開始します。
obclient> ALTER SYSTEM MINOR FREEZE tenant = t1 ls 1 tablet_id = 60000;
メジャーコンパクションの一時停止または再開の例
システムテナントがすべてのユーザーテナント(システムテナントとMetaテナントを除く)のメジャーコンパクションを一時停止します。
obclient> ALTER SYSTEM SUSPEND MERGE TENANT = all_user;システムテナントが指定したテナント
tenant1とtenant2のメジャーコンパクションを一時停止します。obclient> ALTER SYSTEM SUSPEND MERGE TENANT = tenant1,tenant2;システムテナントがすべてのMetaテナントのメジャーコンパクションを一時停止します。
obclient> ALTER SYSTEM SUSPEND MERGE TENANT = all_meta;システムテナントがすべてのユーザーテナント(システムテナントとMetaテナントを除く)のメジャーコンパクションを再開します。
obclient> ALTER SYSTEM RESUME MERGE TENANT = all_user;システムテナントが指定したテナント
tenant1とtenant2のメジャーコンパクションを再開します。obclient> ALTER SYSTEM RESUME MERGE TENANT = tenant1,tenant2;システムテナントがすべてのMetaテナントのメジャーコンパクションを再開します。
obclient> ALTER SYSTEM RESUME MERGE TENANT = all_meta;
マージエラーマークのクリーンアップ例
システムテナントがすべてのユーザーテナント(システムテナントとMetaテナントを除く)のマージエラーマークをクリーンアップします。
obclient> ALTER SYSTEM CLEAR MERGE ERROR TENANT = all_user;システムテナントが指定されたテナント
tenant1およびtenant2のマージエラーマークをクリーンアップします。obclient> ALTER SYSTEM CLEAR MERGE ERROR TENANT = tenant1,tenant2;システムテナントがすべてのMetaテナントのマージエラーマークをクリーンアップします。
obclient> ALTER SYSTEM CLEAR MERGE ERROR TENANT = all_meta;
パーティションレベルのメジャーコンパクションを開始する
テーブルのTABLET IDを取得します。
例:
obclient> SELECT t1.tenant_id, t2.tenant_name, t1.database_name, t1.table_id, t1.table_name, t1.tablet_id, t1.PARTITION_NAME, t1.SUBPARTITION_NAME FROM oceanbase.CDB_OB_TABLE_LOCATIONS t1, oceanbase.DBA_OB_TENANTS t2 WHERE t1.tenant_id=t2.tenant_id AND t1.table_name = 'test_tbl1' AND t2.tenant_name = 'oracle001';実行結果は次のとおりです:
+-----------+-------------+---------------+----------+------------+-----------+----------------+-------------------+ | tenant_id | tenant_name | database_name | table_id | table_name | tablet_id | PARTITION_NAME | SUBPARTITION_NAME | +-----------+-------------+---------------+----------+------------+-----------+----------------+-------------------+ | 1004 | oracle001 | SYS | 500011 | TEST_TBL1 | 200008 | P1 | SP0 | | 1004 | oracle001 | SYS | 500011 | TEST_TBL1 | 200009 | P1 | SP1 | | 1004 | oracle001 | SYS | 500011 | TEST_TBL1 | 200010 | P1 | SP2 | | 1004 | oracle001 | SYS | 500011 | TEST_TBL1 | 200011 | P1 | SP3 | | 1004 | oracle001 | SYS | 500011 | TEST_TBL1 | 200012 | P2 | SP4 | | 1004 | oracle001 | SYS | 500011 | TEST_TBL1 | 200013 | P2 | SP5 | | 1004 | oracle001 | SYS | 500011 | TEST_TBL1 | 200014 | P2 | SP6 | | 1004 | oracle001 | SYS | 500011 | TEST_TBL1 | 200015 | P2 | SP7 | +-----------+-------------+---------------+----------+------------+-----------+----------------+-------------------+ 8 rows in set詳細については、oceanbase.CDB_OB_TABLE_LOCATIONSを参照してください。
メジャーコンパクションを開始します。
例:
obclient> ALTER SYSTEM MAJOR FREEZE TENANT = oracle001 TABLET_ID = 200008;
パーティションレベルのダンプを開始する
テーブルのTABLET IDを照会します。
例:
obclient> SELECT t1.tenant_id, t2.tenant_name, t1.database_name, t1.table_id, t1.table_name, t1.tablet_id, t1.PARTITION_NAME, t1.SUBPARTITION_NAME FROM oceanbase.CDB_OB_TABLE_LOCATIONS t1, oceanbase.DBA_OB_TENANTS t2 WHERE t1.tenant_id=t2.tenant_id AND t1.table_name = 'test_tbl1' AND t2.tenant_name = 'oracle001';実行結果は次のとおりです:
+-----------+-------------+---------------+----------+------------+-----------+----------------+-------------------+ | tenant_id | tenant_name | database_name | table_id | table_name | tablet_id | PARTITION_NAME | SUBPARTITION_NAME | +-----------+-------------+---------------+----------+------------+-----------+----------------+-------------------+ | 1004 | oracle001 | SYS | 500011 | TEST_TBL1 | 200008 | P1 | SP0 | | 1004 | oracle001 | SYS | 500011 | TEST_TBL1 | 200009 | P1 | SP1 | | 1004 | oracle001 | SYS | 500011 | TEST_TBL1 | 200010 | P1 | SP2 | | 1004 | oracle001 | SYS | 500011 | TEST_TBL1 | 200011 | P1 | SP3 | | 1004 | oracle001 | SYS | 500011 | TEST_TBL1 | 200012 | P2 | SP4 | | 1004 | oracle001 | SYS | 500011 | TEST_TBL1 | 200013 | P2 | SP5 | | 1004 | oracle001 | SYS | 500011 | TEST_TBL1 | 200014 | P2 | SP6 | | 1004 | oracle001 | SYS | 500011 | TEST_TBL1 | 200015 | P2 | SP7 | +-----------+-------------+---------------+----------+------------+-----------+----------------+-------------------+ 8 rows in set詳細については、oceanbase.CDB_OB_TABLE_LOCATIONSを参照してください。
ダンプを開始します。
例:
obclient> ALTER SYSTEM MINOR FREEZE TENANT = oracle001 TABLET_ID = 200008;