mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-27 08:39:28 +08:00
177 lines
5.5 KiB
Plaintext
177 lines
5.5 KiB
Plaintext
$PostgreSQL: pgsql/contrib/pgstattuple/README.pgstattuple.euc_jp,v 1.8 2006/09/04 03:49:05 momjian Exp $
|
||
|
||
pgstattuple README 2002/08/22 石井達夫
|
||
|
||
1. サポートされている関数
|
||
|
||
pgstattuple
|
||
-----------
|
||
pgstattupleは,UPDATEやDELETEで作られたリレーションのゴミ領域の大きさを,
|
||
リレーション自体の物理的な大きさに対するパーセンテージで返却します.つ
|
||
まり,返却値が大きければ,それだけゴミも多いので,vacuumをかける必
|
||
要があるという判断の助けになるわけです.これ以外にもいろいろな情報
|
||
が返ります.
|
||
pgstattuple() は、リレーションの長さや、タプルの"ゴミ領域"の割合などの
|
||
情報を返却します。これらの情報は、vacuum が必要かどうか、ユーザが判断
|
||
するのに役立つでしょう。例えば以下のような形になります:
|
||
|
||
test=> \x
|
||
Expanded display is on.
|
||
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
|
||
|
||
以下が各項目の内容です:
|
||
|
||
table_len -- リレーションの物理的な大きさ(バイト)
|
||
tuple_count -- タプル数
|
||
tuple_len -- タプル長の合計(バイト)
|
||
tuple_percent -- タプルの割合.table_lenに対するtuple_lenの比率.
|
||
dead_tuple_len -- デッドタプル数
|
||
dead_tuple_percent -- デッドタプルの割合.table_lenに対するtuple_lenの比率.
|
||
free_space -- 再利用可能な領域(バイト)
|
||
free_percent -- 再利用可能な領域.table_lenに対するfree_spaceの比率.
|
||
|
||
pg_relpages
|
||
-----------
|
||
pg_relpages() はリレーションのページ数を返却します.
|
||
|
||
pgstatindex
|
||
-----------
|
||
pgstatindex() はインデックスに関する情報を返却します:
|
||
|
||
test=> \x
|
||
Expanded display is on.
|
||
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
|
||
|
||
bt_metap
|
||
--------
|
||
bt_metap() はbtreeインデックスのメタページに関する情報を返却します:
|
||
|
||
test=> SELECT * FROM bt_metap('pg_cast_oid_index');
|
||
-[ RECORD 1 ]-----
|
||
magic | 340322
|
||
version | 2
|
||
root | 1
|
||
level | 0
|
||
fastroot | 1
|
||
fastlevel | 0
|
||
|
||
bt_page_stats
|
||
-------------
|
||
bt_page_stats() は、btreeの単一のページに関する情報を表示します:
|
||
|
||
test=> SELECT * FROM bt_page_stats('pg_cast_oid_index', 1);
|
||
-[ RECORD 1 ]-+-----
|
||
blkno | 1
|
||
type | l
|
||
live_items | 256
|
||
dead_items | 0
|
||
avg_item_size | 12
|
||
page_size | 8192
|
||
free_size | 4056
|
||
btpo_prev | 0
|
||
btpo_next | 0
|
||
btpo | 0
|
||
btpo_flags | 3
|
||
|
||
bt_page_items
|
||
-------------
|
||
bt_page_items() は、各btreeページの個別のアイテムに関する情報を表示します:
|
||
|
||
test=> SELECT * FROM bt_page_items('pg_cast_oid_index', 1);
|
||
itemoffset | ctid | itemlen | nulls | vars | data
|
||
------------+---------+---------+-------+------+-------------
|
||
1 | (0,1) | 12 | f | f | 23 27 00 00
|
||
2 | (0,2) | 12 | f | f | 24 27 00 00
|
||
3 | (0,3) | 12 | f | f | 25 27 00 00
|
||
4 | (0,4) | 12 | f | f | 26 27 00 00
|
||
5 | (0,5) | 12 | f | f | 27 27 00 00
|
||
6 | (0,6) | 12 | f | f | 28 27 00 00
|
||
7 | (0,7) | 12 | f | f | 29 27 00 00
|
||
8 | (0,8) | 12 | f | f | 2a 27 00 00
|
||
|
||
|
||
2. pgstattupleのインストール
|
||
|
||
PostgreSQLが/usr/local/pgsqlにインストール済であり,testデータベー
|
||
スにpgstattupleをインストールする場合の手順を示します.
|
||
|
||
$ make
|
||
$ make install
|
||
|
||
ユーザ定義関数を登録します.
|
||
|
||
$ psql -e -f /usr/local/pgsql/share/contrib/pgstattuple.sql test
|
||
|
||
|
||
3. pgstattupleの使い方
|
||
|
||
pgstattupleの呼び出し形式は以下です.
|
||
|
||
CREATE OR REPLACE FUNCTION pgstattuple(text) RETURNS pgstattuple_type
|
||
AS 'MODULE_PATHNAME', 'pgstattuple'
|
||
LANGUAGE C STRICT;
|
||
|
||
第一引数: リレーション名
|
||
|
||
関数の戻りはpgstattuple_type型です.
|
||
|
||
pgstattupleはリレーションにAccessShareLockしかかけないので,
|
||
pgstattuple を実行中に該当リレーションに更新や削除が発生すると,正しく
|
||
ない結果を返す可能性があります.
|
||
|
||
pgstattupleがタプルを「ゴミ」と判断する基準は,
|
||
HeapTupleSatisfiesNow()が偽を返したときです.
|
||
|
||
4. pgstattupleのライセンス条件について
|
||
|
||
pgstattuple.cの冒頭に書いてある通りです.また,pgstattuple は完全に無保
|
||
証です.pgstattuple を使用したことによって生じるいかなる結果に関して
|
||
も責任を負いません.
|
||
|
||
5. 改訂履歴
|
||
|
||
2006/06/28
|
||
|
||
インデックスに対しても動作するように拡張。
|
||
|
||
2002/09/04
|
||
|
||
SRF変更に伴い,Tom Lane が修正インターフェイスの修正を行った.
|
||
そのことをこのREADMEにも反映.
|
||
|
||
2002/08/23
|
||
|
||
SRF(Set Returning Function)を使って7.3用に書き換え.
|
||
|
||
2001/12/20 Tom Laneによる修正
|
||
|
||
Fix pgstattuple to acquire a read lock on the target table. This
|
||
prevents embarassments such as having the table dropped or truncated
|
||
partway through the scan. Also, fix free space calculation to include
|
||
pages that currently contain no tuples.
|
||
|
||
2001/10/01 PostgreSQL 7.2 用contrib moduleに登録
|
||
|
||
2001/08/30 pgstattuple バージョン 0.1リリース
|