SQLステートメントを使用してWRストレージの使用状況を確認します。WR自体はメモリをあまり占有しませんが、WRがストレージを多く占有している場合は、DBMSパッケージを使用してデータを削除できます。
操作手順
WRが占有するスペースを確認します。
SSTable内のWRが占有するスペースを確認します。
__all_virtual_table、__all_virtual_tablet_meta_table、および__all_virtual_ls_meta_tableテーブルを使用してSSTable内のWRが占有するスペースを確認します:select sum(b.data_size) from __all_virtual_table a inner join __all_virtual_tablet_meta_table b on a.tenant_id=b.tenant_id and a.tablet_id=b.tablet_id left join __all_virtual_ls_meta_table c on b.tenant_id=c.tenant_id and b.ls_id = c.ls_id and b.svr_ip=c.svr_ip and b.svr_port = c.svr_port where a.table_name like "__wr_%" and a.tablet_id != 0;実行結果は次のとおりです:
+------------------+ | sum(b.data_size) | +------------------+ | 1196806 | +------------------+ 1 row in set (0.079 sec)ここで、data_sizeはテーブルに保存されているデータの総サイズをバイト単位で表します。
MemTable内のWRが占有するスペースを確認します。
__all_virtual_table、__all_virtual_memstore_info、および__all_virtual_ls_meta_tableテーブルを使用してSSTable内のWRが占有するスペースを確認します:select sum(mem_used), sum(hash_mem_used), sum(btree_mem_used) from __all_virtual_table a inner join __all_virtual_memstore_info b on a.tenant_id=b.tenant_id and a.tablet_id=b.tablet_id left join __all_virtual_ls_meta_table c on b.tenant_id=c.tenant_id and b.ls_id = c.ls_id and b.svr_ip=c.svr_ip and b.svr_port = c.svr_port where a.table_name like "__wr%" and a.tablet_id != 0;実行結果は次のとおりです:
+---------------+--------------------+---------------------+ | sum(mem_used) | sum(hash_mem_used) | sum(btree_mem_used) | +---------------+--------------------+---------------------+ | 46137344 | 4207936 | 352 | +---------------+--------------------+---------------------+ 1 row in set (0.087 sec)パラメータの説明:
フィールド 説明 mem_used テーブルがメモリ内で使用する総メモリ量。単位はバイトです hash_mem_used ハッシュテーブルがメモリ内で使用する総メモリ量。単位はバイトです btree_mem_used ツリーインデックスがメモリ内で使用する総メモリ量。単位はバイトです
WRが占有するスペースをクリーンアップします。 DBMSパッケージを使用してWRが占有するスペースをクリーンアップする場合、クリーンアップ後にコンパクションを実行する必要があります。
最初に、テナント内のすべてのSNAP_IDを照会します。
obclient [oceanbase]> select count(1),min(snap_id), max(snap_id) from oceanbase.DBA_WR_SNAPSHOT;実行結果は次のとおりです:
+----------+--------------+--------------+ | count(1) | min(snap_id) | max(snap_id) | +----------+--------------+--------------+ | 230 | 47 | 276 | +----------+--------------+--------------+ 1 row in set (0.051 sec)この時点で、システム内のSNAP_IDの範囲は[47, 276]となっています。
SNAP_IDの範囲内のスナップショットデータを削除します。例えば、SNAP_IDが47から275の範囲内のデータを削除します。
obclient [oceanbase]> CALL DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE('47','275'); Query OK, 0 rows affected, 4 warnings (4.129 sec)SNAP_IDが正常に削除されたかどうかを確認します。
obclient [oceanbase]> select count(1),min(snap_id), max(snap_id) from oceanbase.DBA_WR_SNAPSHOT;実行結果は次のとおりです:
+----------+--------------+--------------+ | count(1) | min(snap_id) | max(snap_id) | +----------+--------------+--------------+ | 1 | 276 | 276 | +----------+--------------+--------------+ 1 row in set (0.043 sec)この時点でSNAP_IDの値は276であり、SNAP_IDの削除に成功したことを示しています。
スペースを解放するためにコンパクション操作を実行します。コンパクションの詳細については、コンパクションを参照してください。
コンパクション操作を実行します。
説明
ビジネスのピークタイムに手動でコンパクションを実行することは推奨されません。
obclient [oceanbase]> ALTER SYSTEM MAJOR FREEZE TENANT = sys; Query OK, 0 rows affected (0.049 sec)oceanbase.CDB_OB_ZONE_MAJOR_COMPACTIONビューを使用して、コンパクション操作が完了したかどうかを確認します。STATUSフィールドの値がIDLEに変更された場合、コンパクションが完了したことを示します。obclient [oceanbase]> SELECT * FROM oceanbase.CDB_OB_ZONE_MAJOR_COMPACTION where tenant_id = 1;この時点で
STATUSフィールドの値はCOMPACTINGであり、コンパクション中であることを示しています。+-----------+-------+---------------------+---------------------+----------------------------+----------------------------+------------+ | TENANT_ID | ZONE | BROADCAST_SCN | LAST_SCN | LAST_FINISH_TIME | START_TIME | STATUS | +-----------+-------+---------------------+---------------------+----------------------------+----------------------------+------------+ | 1 | zone1 | 1695798402011671173 | 1695751201399410304 | 2023-09-27 02:02:14.339229 | 2023-09-27 15:06:42.095810 | COMPACTING | +-----------+-------+---------------------+---------------------+----------------------------+----------------------------+------------+ 1 row in set (0.051 sec)1~2分待機して、コンパクションの完了を待ちます。
+-----------+-------+---------------------+---------------------+----------------------------+----------------------------+--------+ | TENANT_ID | ZONE | BROADCAST_SCN | LAST_SCN | LAST_FINISH_TIME | START_TIME | STATUS | +-----------+-------+---------------------+---------------------+----------------------------+----------------------------+--------+ | 1 | zone1 | 1695798402011671173 | 1695798402011671173 | 2023-09-27 15:08:36.406838 | 2023-09-27 15:06:42.095810 | IDLE | +-----------+-------+---------------------+---------------------+----------------------------+----------------------------+--------+ 1 row in set (0.043 sec)
コンパクション完了後、クリーンアップ後の占有スペースを確認します。
SSTable内のWRが占有するスペースを確認します。
__all_virtual_table、__all_virtual_tablet_meta_table、および__all_virtual_ls_meta_tableテーブルを使用してSSTable内のWRが占有するスペースを確認します:select sum(b.data_size) from __all_virtual_table a inner join __all_virtual_tablet_meta_table b on a.tenant_id=b.tenant_id and a.tablet_id=b.tablet_id left join __all_virtual_ls_meta_table c on b.tenant_id=c.tenant_id and b.ls_id = c.ls_id and b.svr_ip=c.svr_ip and b.svr_port = c.svr_port where a.table_name like "__wr_%" and a.tablet_id != 0;実行結果は次のとおりであり、SSTable内のWRが占有するスペースが解放されたことを示しています。
+------------------+ | sum(b.data_size) | +------------------+ | 482353 | +------------------+ 1 row in set (0.065 sec)- MemTable内のWRが占有するスペースを確認します。
__all_virtual_table、__all_virtual_memstore_info、および__all_virtual_ls_meta_tableテーブルを使用してSSTable内のWRが占有するスペースを確認します:select sum(mem_used), sum(hash_mem_used), sum(btree_mem_used) from __all_virtual_table a inner join __all_virtual_memstore_info b on a.tenant_id=b.tenant_id and a.tablet_id=b.tablet_id left join __all_virtual_ls_meta_table c on b.tenant_id=c.tenant_id and b.ls_id = c.ls_id and b.svr_ip=c.svr_ip and b.svr_port = c.svr_port where a.table_name like "__wr%" and a.tablet_id != 0;実行結果は次のとおりであり、MemTable内のWRが占有するスペースが解放されたことを示しています。
+---------------+--------------------+---------------------+ | sum(mem_used) | sum(hash_mem_used) | sum(btree_mem_used) | +---------------+--------------------+---------------------+ | 12582912 | 1053952 | 128 | +---------------+--------------------+---------------------+ 1 row in set (0.076 sec)