[pgsql-jp: 40262] Re: 複数DBのXID

Takahiro Itagaki itagaki.takahiro @ oss.ntt.co.jp
2010年 5月 7日 (金) 13:30:24 JST


ivp sasaki <sasaki @ ivp.co.jp> wrote:

> このような値でした。その後深夜に定期vacuumが実行され、
> 今朝見てみると
>     datname    |    age
> ---------------+------------
>  postgres      | 1077866122
> このように減少していました。

たぶん、単に全てのデータベースに VACUUM がかかったのではないかと思います。
バージョンにもよりますが、例えば PG 8.1 では、VACUUM による行ごとの
XID のフリーズの閾値は 2^30 - 1 = 1,073,741,823 のため、
長い時間使っていると age はこの値前後に留まることになります。
参考: http://www.postgresql.jp/document/current/html/routine-vacuuming.html#VACUUM-FOR-WRAPAROUND

> これは、Postgresとしては正常な動きなのでしょうか?
> システムカタログテーブルはこのような形で他のDBと
> 影響し合うものなのでしょうか?

VACUUM のかけ方にもよりますが、(template0 を除く) 全てのデータベースの age が
10億程度に保たれるのは、正常な動作です。むしろ、20億まで増え続けるようだと、
いわゆるXID 周回によるデータ欠損が発生する恐れがあります。

------------------------------------------------------------
NTT オープンソース ソフトウェア センタ
板垣貴裕 <itagaki.takahiro @ oss.ntt.co.jp>




pgsql-jp メーリングリストの案内