pgstattuple

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

# F.30. pgstattuple

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

## F.30.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(text)`と同じです。

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

`pg_relpages(text) returns bigint`

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

## F.30.2. 作者

Tatsuo Ishii and Satoshi Nagayasu

前のページ | ホーム | 次のページ
pg_stat_statements | 上に戻る | pg_trgm