他のバージョンの文書 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

F.24. pg_freespacemap

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

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

F.24.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に応じてリレーションの各ページの空き領域の量を表示します。リレーション内のそれぞれのページに対し1タプルとして、1組の(blkno bigint, avail int2)タプルが返されます。

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

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

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

F.24.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.24.3. 作者

オリジナルバージョンは Mark Kirkwood によるものです。 バージョン8.4では、Heikki Linnakangas により、新しいFSM実装に合うよう書き直されました。