F.24. pgstattuple
pgstattupleモジュールはタプルレベルの統計情報を入手するための各種関数を提供します。
F.24.1. 関数
pgstattuple(text) returns recordpgstattuple()はリレーションの物理的な長さ、リレーションの"不要"なタプルの割合などの情報を返します。 これらはバキュームが必要かどうかユーザが判断する時に有用かもしれません。 引数は対象とするリレーションの名前(スキーマ修飾可)です。 以下に例を示します。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-27.
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 recordOIDで対象リレーションで指定する点を除き、これは
pgstattuple(text)と同じです。pgstatindex(text) returns recordpgstatindexは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出力列は以下の通りです。
表 F-28.
pgstatindexの出力列列 型 説明 version integer B-Treeバージョン番号 tree_level integer ルートページのツリーレベル index_size integer インデックス内の総ページ数 root_block_no integer ルートブロックの場所 internal_pages integer "内部"(上位レベル)ページ数 leaf_pages integer リーフページ数 empty_pages integer 空ページ数 deleted_pages integer 削除ページ数 avg_leaf_density float8 リーフページの平均密度 leaf_fragmentation float8 リーフページの断片化 pgstattupleでは、結果はページ毎に累積されます。 インデックス全体のインスタンスのスナップショットが存在すると想定してはいけません。pg_relpages(text) returns integerpg_relpagesはリレーション内のページ数を返します。
F.24.2. 作者
Tatsuo Ishii