pg_freespacemap

PostgreSQL 9.0.0文書
前のページ | 巻戻し | 付録 F. 追加で提供されるモジュール | 早送り | 次のページ

# F.26. pg_freespacemap

`pg_freespacemap`モジュールは、空き領域マップ（FSM）を検査する手法を提供します。`pg_freespace`と呼ばれる関数、正確に言うと、ふたつの多重定義された関数を提供します。これらの関数は、指定されたページ、あるいはリレーションの全てのページについての、空き領域マップに記録されている値を表示します。

デフォルトでは、潜在的なセキュリティ問題が存在するため、これらの関数のPUBLICアクセスは無効にされています。

## F.26.1. 関数

`pg_freespace(rel regclass IN, blkno bigint IN) returns int2`

  FSMを参照して、`blkno`で指定されたリレーションのページ上の空き領域のサイズを返します。

`pg_freespace(rel regclass IN, blkno OUT bigint, avail OUT int2)`

  FSMを参照して、リレーションの各ページの空き領域のサイズを表示します。 リレーションの各ページに対して`(blkno bigint, avail int2)`が1タプルとなり、これらのタプルのセットが返却されます。

空き領域マップに格納された値は、正確ではありません。 これらの値は`BLCKSZ`(デフォルト`BLCKSZ`では32バイト)の1/256の精度で丸められ、また、タプルが挿入や更新されるのと同じように、完全に最新に保たれているわけではありません。

インデックスでは、ページ内の空き領域ではなく、完全に未使用のページが追跡されます。 したがって、その値には意味がなく、単にページが一杯か空かを表します。

注意: バージョン8.4で導入された新しいFSM実装を反映するために、同バージョンでインタフェースが変更されました。

## F.26.2. サンプル出力

    postgres=# SELECT * FROM pg_freespace('foo');
     blkno | avail
    -------+-------
         0 |     0
         1 |     0
         2 |     0
         3 |    32
         4 |   704
         5 |   704
         6 |   704
         7 |  1216
         8 |   704
         9 |   704
        10 |   704
        11 |   704
        12 |   704
        13 |   704
        14 |   704
        15 |   704
        16 |   704
        17 |   704
        18 |   704
        19 |  3648
    (20 rows)

    postgres=# SELECT * FROM pg_freespace('foo', 7);
     pg_freespace
    --------------
             1216
    (1 row)

## F.26.3. 作者

オリジナルバージョンは Mark Kirkwood `<markir@paradise.net.nz>`によるものです。 バージョン8.4では、Heikki Linnakangas `<heikki@enterprisedb.com>`により、新しいFSM実装に合うよう書き直されました。

前のページ | ホーム | 次のページ
pgcrypto | 上に戻る | pgrowlocks