HologresはPostgreSQLと互換性があります。 PostgreSQL関数を使用して、Hologresのテーブルまたはデータベースのストレージサイズをクエリできます。 このトピックでは、SQLステートメントを実行してテーブルとデータベースのストレージサイズをクエリする方法について説明します。
制限事項
内部テーブルのストレージサイズのみをクエリできます。 親テーブルのストレージサイズを直接クエリすることはできません。 親テーブルのストレージサイズを直接クエリしようとすると、値0が返されます。 子テーブルのストレージサイズをクエリできます。 テーブルのストレージサイズが0の場合、null値が返されます。
Hologres V1.3.24以降では、
pg_relation_size関数を使用して、バイナリロギングが有効になっているHologresテーブルのストレージサイズをクエリできます。pg_relation_size関数は、テーブルのストレージサイズを収集するために使用されます。 メトリックは、インスタンスのPanguディレクトリに格納されているファイルのストレージサイズを収集するために使用されます。 これらのファイルには、テーブル、メタデータファイル、および書き込み、更新、削除操作によって生成された一時ファイルが含まれます。 したがって、メトリックに基づいて収集されたファイルのストレージサイズは、pg_relation_size関数を使用してクエリされたテーブルのストレージサイズよりもわずかに大きくなります。
テーブルのストレージサイズのクエリ
構文
SELECT pg_relation_size('table_name');-- 戻り値の単位はバイトです。パラメータ
パラメータ
説明
table_name
現在のデータベースでストレージサイズをクエリするテーブルの名前。
戻り値:戻り値の単位はバイトで、戻り値のタイプはSTRINGです。 戻り値は、テーブルが現在占有しているメモリと物理ディスク容量の合計サイズを示します。
読みやすくするには、pg_size_pretty 関数を使用します。 サンプルステートメント:
-- 現在のデータベース内の単一テーブルのストレージサイズをクエリします。 SELECT pg_size_pretty(pg_relation_size('table_name')); -- 現在のデータベース内のすべてのテーブルのストレージサイズをクエリします。 SELECT table_schema || '.' || table_name AS table_full_name, pg_size_pretty(pg_relation_size(quote_ident(table_schema) || '.' || quote_ident(table_name))) AS table_size, pg_relation_size(quote_ident(table_schema) || '.' || quote_ident(table_name)) AS order_size FROM information_schema.tables WHERE table_schema NOT IN ('pg_catalog','information_schema','hologres') ORDER BY order_size DESC;
スキーマのストレージサイズのクエリ
説明
SQLステートメントを実行することにより、スキーマ内のすべてのテーブルのストレージサイズをクエリできます。
構文
SELECT table_schema, pg_size_pretty(SUM(pg_relation_size(quote_ident(table_schema) || '.' || quote_ident(table_name))::decimal)) AS schema_size FROM information_schema.tables WHERE table_schema = '<schema_name>' GROUP BY table_schema;パラメータ
パラメータ
説明
schema_name
現在のテーブルが属するスキーマの名前。
戻り値:戻り値の単位はバイトです。
データベースのストレージサイズのクエリ
説明
現在のデータベースのストレージサイズと、データベース内の内部テーブルのサイズをクエリできます。
構文
SELECT pg_database_size(current_database()); -- 戻り値の単位はバイトです。パラメータ
パラメータ
説明
current_database
現在のデータベース。 前述のステートメントを直接実行して、現在のデータベースのストレージサイズをクエリできます。
戻り値:戻り値の単位はバイトです。 戻り値は、すべてのHologresテーブルのサイズと、現在のデータベースで生成されたログ先行書き込みのサイズを示します。
読みやすくするには、pg_size_pretty 関数を使用します。 サンプルステートメント:
SELECT pg_size_pretty(pg_database_size(current_database())); -- 戻り値の単位はKBまたはMBの場合があります。
テーブルのストレージ詳細のクエリ
Hologres V2.1以降では、hologres.hg_relation_size 関数を使用して、データとバイナリログのストレージサイズを含む、テーブルのストレージ詳細をクエリできます。
制限事項
Hologres V2.1以降でのみ、
hologres.hg_relation_size関数がサポートされています。構文
SELECT hologres.hg_relation_size('<schema.table>','[data|binlog|mv|all]') ;パラメータ
パラメータ
説明
schema.table
このパラメータでは、schemaはテーブルが属するスキーマの名前を指定し、tableはテーブル名を指定します。
[data|binlog|mv|all]
オプション。
data:テーブル内のデータのストレージサイズ。
binlog:テーブルのバイナリログのストレージサイズ。
mv:テーブルに対してマテリアライズドビューが作成されている場合、マテリアライズドビューのストレージサイズ。
all:テーブルの合計ストレージサイズ。
例
例 1:テーブル内のデータのストレージサイズをクエリします。
SELECT hologres.hg_relation_size('<schema.table>','data') ;例 2:テーブルのバイナリログのストレージサイズをクエリします。
SELECT hologres.hg_relation_size('<schema.table>','binlog') ;例 3:データベース内のすべてのテーブルのストレージサイズをクエリします。
SELECT table_schema || '.' || table_name AS table_full_name, pg_size_pretty(hologres.hg_relation_size(quote_ident(table_schema) || '.' || quote_ident(table_name),'data')) AS data_size, hologres.hg_relation_size(quote_ident(table_schema) || '.' || quote_ident(table_name),'data') AS order_size FROM information_schema.tables WHERE table_schema NOT IN ('pg_catalog','information_schema','hologres','hologres_statistic') ORDER BY order_size DESC;