mirror of https://github.com/postgres/postgres
parent
1d2a185eae
commit
40e01e267d
@ -1,121 +0,0 @@ |
||||
$PostgreSQL: pgsql/contrib/pgrowlocks/README.pgrowlocks.euc_jp,v 1.1 2006/04/23 01:12:58 ishii Exp $ |
||||
|
||||
pgrowlocks README 石井達夫 |
||||
|
||||
1. pgrowlocksとは |
||||
|
||||
pgrowlocksは,指定されたテーブルの行ロックに関する情報を表示します. |
||||
|
||||
pgrowlocksの返す型は,以下のようになります. |
||||
|
||||
CREATE TYPE pgrowlocks_type AS ( |
||||
locked_row TID, -- row TID |
||||
lock_type TEXT, -- lock type |
||||
locker XID, -- locking XID |
||||
multi bool, -- multi XID? |
||||
xids xid[], -- multi XIDs |
||||
pids INTEGER[] -- locker's process id |
||||
); |
||||
|
||||
実行例を示します. |
||||
|
||||
test=# SELECT * FROM pgrowlocks('t1'); |
||||
locked_row | lock_type | locker | multi | xids | pids |
||||
------------+-----------+--------+-------+-----------+--------------- |
||||
(0,1) | Shared | 19 | t | {804,805} | {29066,29068} |
||||
(0,2) | Shared | 19 | t | {804,805} | {29066,29068} |
||||
(0,3) | Exclusive | 804 | f | {804} | {29066} |
||||
(0,4) | Exclusive | 804 | f | {804} | {29066} |
||||
(4 rows) |
||||
|
||||
各項目の説明です. |
||||
|
||||
locked_row -- ロックされた行のタプルID(TID) |
||||
lock_type -- 共有ロックなら"Shared",排他ロックなら"Exclusive" |
||||
locker -- ロックをかけているトランザクションID[注1] |
||||
multi -- lockerがマルチトランザクションならtそうでなければf |
||||
xids -- ロックをかけているトランザクションID[注2] |
||||
pids -- ロックをかけているバックエンドプロセスのプロセスID[注2] |
||||
|
||||
[注1: lockerがマルチなら,トランザクションIDではなくてマルチIDになり |
||||
ます.] |
||||
|
||||
[注2: lockerがマルチの場合,複数のデータが表示されます.] |
||||
|
||||
2. pgrowlocksのインストール |
||||
|
||||
pgrowlocksのインストールには,PostgreSQLをインストールしたときのソー |
||||
スツリーが必要です.今のところ対応しているバージョンはPostgreSQL |
||||
8.0以降です. |
||||
|
||||
ここではPostgreSQLのソースは/usr/local/src/postgresql-8.1/に展開さ |
||||
れているものとします. |
||||
|
||||
1) pgrowlocksのソースを展開します.ソースファイルは |
||||
/tmp/pgrowlocks-1.0.tar.gzに置いてあるものとします. |
||||
|
||||
$ cd /usr/local/src/postgresql-8.1/contrib |
||||
$ tar xfz pgrowlocks-1.0.tar.gz |
||||
|
||||
2) PostgreSQL 8.0の場合は,ソースの一部に修正が必要です. |
||||
pgrowlocks.cの61行目辺りに |
||||
|
||||
#undef MAKERANGEVARFROMNAMELIST_HAS_TWO_ARGS |
||||
|
||||
というのがあるので,これを |
||||
|
||||
#define MAKERANGEVARFROMNAMELIST_HAS_TWO_ARGS |
||||
|
||||
に書き換えます(undef->defineにします). |
||||
|
||||
3) コンパイルして関数の共有ライブラリをインストールします. |
||||
|
||||
$ make |
||||
$ make install |
||||
|
||||
4) ユーザ定義関数を登録します. |
||||
|
||||
$ psql -e -f /usr/local/pgsql/share/contrib/pgrowlocks.sql test |
||||
|
||||
この例では"test"というデータベースに登録していますが,もし他のデー |
||||
タベースに登録する場合はここを読み替えてください. |
||||
|
||||
3. pgrowlocksの使い方 |
||||
|
||||
pgrowlocksの呼び出し形式は以下です. |
||||
|
||||
CREATE OR REPLACE FUNCTION pgrowlocks(text) RETURNS pgrowlocks_type |
||||
AS 'MODULE_PATHNAME', 'pgrowlocks' |
||||
LANGUAGE 'c' WITH (isstrict); |
||||
|
||||
第一引数: テーブル名 |
||||
|
||||
関数の戻りはpgrowlocks_type型です. |
||||
|
||||
pgrowlocksはテーブルにAccessShareLockロックをかけ,1行ずつ読み出し |
||||
ては行ロックがかかっているかどうかチェックします.以下の点に注意し |
||||
てください. |
||||
|
||||
1) 該当テーブルに排他ロックがかかっていると,pgrowlocksの実行はブロッ |
||||
クされます. |
||||
|
||||
2) pgrowlocksの実行中に新たにかかったり,解除された行ロックに関する |
||||
情報はpgrowlocksの実行結果に反映されていない可能性があります. |
||||
|
||||
|
||||
pgrowlocksはロックされた行の内容は表示しません.行内容を見たい場合 |
||||
は,テーブルをpgrowlocksのlocked_rows列で結合します.例を示します. |
||||
|
||||
SELECT * FROM accounts AS a, pgrowlocks('accounts') AS p WHERE p.locked_ row = a.ctid; |
||||
|
||||
|
||||
4. pgrowlocksのライセンス条件について |
||||
|
||||
pgrowlocks.cの冒頭に書いてある通りです(修正BSDライセンスに準じてい |
||||
ます).また,pgrowlocks は完全に無保証です.pgrowlocks を使用したこ |
||||
とによって生じるいかなる結果に関しても責任を負いません. |
||||
|
||||
5. 改訂履歴 |
||||
|
||||
2006/03/21 pgrowlocks バージョン 1.1リリース(8.2 currentでテスト) |
||||
2005/08/22 pgrowlocks バージョン 1.0リリース |
@ -1,129 +0,0 @@ |
||||
$PostgreSQL: pgsql/contrib/pgstattuple/README.pgstattuple.euc_jp,v 1.9 2007/06/07 09:56:25 mha 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 |
||||
|
||||
|
||||
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リリース |
Loading…
Reference in new issue