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

Takahiro Itagaki itagaki.takahiro @ oss.ntt.co.jp
2010年 4月 5日 (月) 12:14:51 JST


tanaka <tanaka_hideo @ yahoo.co.jp> 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 @ oss.ntt.co.jp>




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