説明
このステートメントは、システムテナントがストレージ層のメジャーコンパクションまたはダンプ(フリーズ)を開始するために使用します。手動メジャーコンパクションはテナントレベルとパーティションレベルをサポートし、手動ダンプはテナントレベル、ゾーンレベル、サーバーレベル、ログストリームレベル、およびパーティションレベルをサポートします。
構文
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 | 指定した 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;