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を計算することで、ディスク容量の利用率を求めることもできます。