無料スクリプト配布のPHP.TO   PHPの実用的なtips PHPマニュアル MySQLマニュアル Apacheマニュアル PostgreSQLマニュアル マニュアル検索    

F.29. pgstattuple

pgstattuple モジュールはタプルレベルの統計情報を入手するための各種関数を提供します。

F.29.1. 関数

pgstattuple(text) returns record

pgstattuple はリレーションの物理的な長さ、 "不要" なタプルの割合、およびその他の情報を返します。 これはバキュームが必要かどうかユーザが判断する時に有用かもしれません。 引数は対象とするリレーションの名前(スキーマ修飾可)です。 以下に例を示します。

test=> SELECT * FROM pgstattuple('pg_catalog.pg_proc');
-[ RECORD 1 ]------+-------
table_len          | 458752
tuple_count        | 1470
tuple_len          | 438896
tuple_percent      | 95.67
dead_tuple_count   | 11
dead_tuple_len     | 3157
dead_tuple_percent | 0.69
free_space         | 8932
free_percent       | 1.95

出力列を 表F-21 で説明します。

表 F-21. pgstattuple の出力列

説明
table_len bigint リレーションのバイト単位の物理長
tuple_count bigint 有効なタプル数
tuple_len bigint 有効なタプルの物理長(バイト単位)
tuple_percent float8 有効タプルの割合
dead_tuple_count bigint 無効なタプル数
dead_tuple_len bigint バイト単位の総不要タプル長
dead_tuple_percent float8 不要タプルの割合
free_space bigint バイト単位の総空き領域
free_percent float8 空き領域の割合

pgstattuple はリレーション上で読み取りロックのみを獲得します。 ですので、結果はこの瞬間のスナップショットを考慮しません。つまり、同時実行の更新がその結果に影響を与えます。

pgstattuple は、 HeapTupleSatisfiesNow が偽を返すかどうかで、タプルが "不要" かどうか判定します。

pgstattuple(oid) returns record

OIDで対象リレーションを指定する点を除き、これは pgstattuple(regclass) と同じです。

pgstatindex(text) returns record

pgstatindex はB-treeインデックスに関する情報を示すレコードを返します。 以下は例です。

test=> SELECT * FROM pgstatindex('pg_cast_oid_index');
-[ RECORD 1 ]------+------
version            | 2
tree_level         | 0
index_size         | 8192
root_block_no      | 1
internal_pages     | 0
leaf_pages         | 1
empty_pages        | 0
deleted_pages      | 0
avg_leaf_density   | 50.27
leaf_fragmentation | 0

出力列は以下の通りです。

説明
version integer B-treeバージョン番号
tree_level integer ルートページのツリーレベル
index_size bigint インデックス内の総ページ数
root_block_no bigint ルートブロックの場所
internal_pages bigint "内部" (上位レベル)ページ数
leaf_pages bigint リーフページ数
empty_pages bigint 空ページ数
deleted_pages bigint 削除ページ数
avg_leaf_density float8 リーフページの平均密度
leaf_fragmentation float8 リーフページの断片化

pgstattuple では、結果はページ毎に累積されます。 この瞬間のインデックス全体のスナップショットが存在すると想定してはいけません。

pgstatginindex(regclass) returns record

pgstatginindex は、GINインデックスに関する情報を示すレコードを返します。 以下に例を示します。

test=> SELECT * FROM pgstatginindex('test_gin_index');
-[ RECORD 1 ]--+--
version        | 1
pending_pages  | 0
pending_tuples | 0

出力列は以下の通りです。

説明
version integer GINバージョン番号
pending_pages integer 待機中リスト内のページ数
pending_tuples bigint 待機中リスト内のタプル数

pg_relpages(text) returns bigint

pg_relpages はリレーション内のページ数を返します。

F.29.2. 作者

Tatsuo Ishii and Satoshi Nagayasu


powered by SEO.CUG.NET