すべてのプロダクト
Search
ドキュメントセンター

:テーブルとデータベースのストレージサイズのクエリ

最終更新日:Dec 16, 2025

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;