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が占有するスペースをクリーンアップする場合、クリーンアップ後にはメジャーコンパクションを1回実行する必要があります。
まず、テナント内のすべての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)