2010年4月 5日

[pgsql-jp: 40248] Re:pg_class カタログの relfrozenxid とは?


tanaka <tanaka_hideo@xxxxx> wrote:

> pg_classカタログのrelfrozenxidとpg_databaseのdatfrozenxidとは
> 何が異なるのでしょうか?

pg_database.datfrozenxid = max(age(pg_class.relfrozenxid))
の関係です。


=# SELECT * FROM
(SELECT age(datfrozenxid) AS datage FROM pg_database WHERE datname = current_database()) AS d,
(SELECT max(age(relfrozenxid)) AS relage FROM pg_class WHERE relkind IN ('r', 't')) AS r;
datage | relage
--------+--------
22 | 22

理由はいくつか思いつきますが、正確なところはわかりません。
・効率化のためのキャッシュ
・relfrozenxid が無かった時代 (〜8.1) からの互換性の維持
・他DATABASEのpg_classにはアクセスできないが、pg_databaseならばできる
(共有カタログなので)という、実装上の事情。

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

投稿者 xml-rpc : 2010年4月 5日 12:14
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/94850
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。