OceanBaseデータベースでは、ビューを通じてテナントおよびテーブルのディスク容量使用状況を確認できます。
テナントが使用するディスク容量の確認
rootユーザーでクラスタのsysテナントにログインします。接続例は以下のとおりです。データベースへの接続時は、実際の環境に合わせてください。
obclient -h10.xx.xx.xx -P2883 -uroot@sys#obdemo -p***** -A以下のステートメントを実行し、各ノード上のテナントのディスク容量使用状況を確認します。
システムテナント内で、テナント
mysql001が各ノード上の異なるコンポーネントごとに使用するディスク容量を確認するステートメントは以下のとおりです:obclient [oceanbase]> SELECT * FROM oceanbase.CDB_OB_SERVER_SPACE_USAGE WHERE TENANT_NAME='mysql001' ;クエリ結果は次のとおりです:
+-----------+-------------+----------------+-------------+------------+------------+-------------+ | TENANT_ID | TENANT_NAME | SERVER_IP | SERVER_PORT | SPACE_TYPE | DATA_BYTES | USAGE_BYTES | +-----------+-------------+----------------+-------------+------------+------------+-------------+ | 1002 | mysql001 | xx.xx.xx.xx | 2882 | clog Data | 5898749661 | 5898749661 | | 1002 | mysql001 | xx.xx.xx.xx | 2882 | Index Data | 2793 | 24576 | | 1002 | mysql001 | xx.xx.xx.xx | 2882 | Meta Data | 28184576 | 28184576 | | 1002 | mysql001 | xx.xx.xx.xx | 2882 | slog Data | 26112000 | 26112000 | | 1002 | mysql001 | xx.xx.xx.xx | 2882 | Table Data | 25268 | 6438912 | | 1002 | mysql001 | xx.xx.xx.xx | 2882 | Tmp Data | 0 | 0 | | 1002 | mysql001 | xx.xx.xx.xx | 2882 | clog Data | 3348203904 | 3348203904 | | 1002 | mysql001 | xx.xx.xx.xx | 2882 | Index Data | 3936 | 32768 | | 1002 | mysql001 | xx.xx.xx.xx | 2882 | Meta Data | 25452544 | 25452544 | | 1002 | mysql001 | xx.xx.xx.xx | 2882 | slog Data | 39931904 | 39931904 | | 1002 | mysql001 | xx.xx.xx.xx | 2882 | Table Data | 8056455 | 8736768 | | 1002 | mysql001 | xx.xx.xx.xx | 2882 | Tmp Data | 0 | 0 | +-----------+-------------+----------------+-------------+------------+------------+-------------+ 12 rows in set実行結果には以下の項目が含まれます:
SPACE_TYPE:データの種類。以下の種類が含まれます:Table Data:すべてのメインテーブルのすべてのパーティションのデータ。Lobパーティションを含むIndex Data:すべてのインデックステーブルのすべてのパーティションのデータMeta Data:すべてのメタデータTmp Data:一時ファイルclog Data:現在のノード上のclogの合計サイズslog Data:現在のノード上のslogの合計サイズ
DATA_BYTES:データ内容のサイズ。単位はバイトです。USAGE_BYTES:実際に使用されているディスク容量。単位はバイトです。
テーブルが使用するディスク容量の確認
sysテナントまたはユーザーテナントのテナント管理者としてデータベースにログインします。説明
MySQLテナントの管理者ユーザーは
rootユーザー、Oracleテナントの管理者ユーザーはSYSユーザーです。接続例は以下の通りです。データベースへの接続時は、実際の環境に準じてください。
obclient -h10.xx.xx.xx -P2883 -uroot@sys#obdemo -p***** -A以下のステートメントを実行し、テーブルデータのディスク容量使用状況を確認します。
システムテナント
システムテナント内で、テナント
mysql001のテーブルt1のディスク容量使用状況を確認するステートメントは以下の通りです:obclient [oceanbase]> SELECT * FROM oceanbase.CDB_OB_TABLE_SPACE_USAGE WHERE TENANT_NAME='mysql001' AND TABLE_NAME='t1';クエリ結果は次のとおりです:
+-----------+----------+-------------+---------------+---------------------+-------------+---------------+ | TENANT_ID | TABLE_ID | TENANT_NAME | DATABASE_NAME | TABLE_NAME | OCCUPY_SIZE | REQUIRED_SIZE | +-----------+----------+-------------+---------------+---------------------+-------------+---------------+ | 1002 | 500051 | mysql001 | test | t1 | 1233 | 8192 | +-----------+----------+-------------+---------------+---------------------+-------------+---------------+ 1 row in setユーザーテナント
MySQLモードOracleモードMySQLテナントが自身のテナント内の各テーブルのディスク使用状況を確認するステートメントは以下のとおりです。
obclient [oceanbase]> SELECT * FROM oceanbase.DBA_OB_TABLE_SPACE_USAGE;Oracleテナントが自身のテナント内の各テーブルのディスク使用状況を確認するステートメントは以下のとおりです。
obclient [SYS]> SELECT * FROM SYS.DBA_OB_TABLE_SPACE_USAGE;クエリ結果の例は次のとおりです:
+----------+---------------+--------------------------------+-------------+---------------+ | TABLE_ID | DATABASE_NAME | TABLE_NAME | OCCUPY_SIZE | REQUIRED_SIZE | +----------+---------------+--------------------------------+-------------+---------------+ | 500011 | test | wide_table_row_storage2 | 4495925120 | 4613763072 | | 500012 | test | wide_table_column_storage2 | 3915023145 | 4195397632 | | 500014 | test | wide_table_row_column_storage2 | 8410964107 | 9805275136 | +----------+---------------+--------------------------------+-------------+---------------+ 3 rows in set実行結果には以下の項目が含まれます:
OCCUPY_SIZE:テーブル圧縮後にディスクに保存されたデータ量、単位はバイトです。REQUIRED_SIZE:テーブル圧縮後にディスクに保存されたデータが実際に使用するディスク容量、単位はバイトです。
実行結果から、
OCCUPY_SIZEをREQUIRED_SIZEで割ることで、ディスク容量の利用率を計算できます。