ディスク使用量の決定

PostgreSQL 9.1.1文書
前のページ | 巻戻し | 第 28章ディスク使用量の監視 | 早送り | 次のページ

# 28.1. ディスク使用量の決定

各テーブルには、データの大部分が格納されるプライマリヒープディスクファイルが備わっています。 もしテーブルが、可能な限りの値を持つ列を持つ時は、テーブルに関連付けられたTOASTファイルもあります。 このファイルは、メインテーブルに収納するには大き過ぎる値をテーブルに格納するために使用されます（項55.2を参照してください）。 TOASTテーブルが存在する場合は、そのテーブルにインデックスが1つあります。 基本テーブルに関連付けられたインデックスが存在することもあります。 テーブルとインデックスはそれぞれ別のディスクファイルに格納されます。 このファイルが1ギガバイトを超える場合は、複数のファイルになります。 これらのファイルの命名規約について項55.1で説明します。

ディスクスペースの監視は、次の3つの方法で行えます。 表9-59にあるSQL関数を使用する方法と oid2nameモジュールを使用する方法、およびシステムカタログを手動で調べる方法です。 SQL関数を使用する方法が、一般的に一番簡単な方法です。 本セクションの残りの部分で、システムカタログを調査することによりこの方法を示します。

バキュームされて間もないデータベース、もしくは解析されたデータベース上でpsqlを使用することにより、どのようなテーブルでもディスクの使用量を調べる問い合わせを発行できます。

    SELECT pg_relation_filepath(oid), relpages FROM pg_class WHERE relname = 'customer';

     pg_relation_filepath | relpages
    ----------------------+----------
     base/16384/16806     |       60
    (1 row)

1ページは通常8キロバイトです （`relpages`は`VACUUM`と`ANALYZE`、さらに`CREATE INDEX`といったいくつかのDDLによってのみ更新されることに注意してください）。 もしテーブルのディスクファイルを直接調べるときは、ファイルのパス名称に注目して下さい。

TOASTテーブルで使用されている容量を示すには、以下のような問い合わせを使用してください。

    SELECT relname, relpages
    FROM pg_class,
         (SELECT reltoastrelid
          FROM pg_class
          WHERE relname = 'customer') AS ss
    WHERE oid = ss.reltoastrelid OR
          oid = (SELECT reltoastidxid
                 FROM pg_class
                 WHERE oid = ss.reltoastrelid)
    ORDER BY relname;

           relname        | relpages
    ----------------------+----------
     pg_toast_16806       |        0
     pg_toast_16806_index |        1

インデックスサイズについても、以下のように簡単に表示できます。

    SELECT c2.relname, c2.relpages
    FROM pg_class c, pg_class c2, pg_index i
    WHERE c.relname = 'customer' AND
          c.oid = i.indrelid AND
          c2.oid = i.indexrelid
    ORDER BY c2.relname;

           relname        | relpages
    ----------------------+----------
     customer_id_indexdex |       26

この情報を使用して、以下のように簡単に最大のテーブルとインデックスを見つけ出すことができます。

    SELECT relname, relpages
    FROM pg_class
    ORDER BY relpages DESC;

           relname        | relpages
    ----------------------+----------
     bigtable             |     3290
     customer             |     3144

前のページ | ホーム | 次のページ
ディスク使用量の監視 | 上に戻る | ディスク容量不足による問題