2010年4月 4日

[pgsql-jp: 40246] Re:トランザクション ID の最大値

こんにちは、
返信ありがとうございます。

>
> > 1. age() は、元々 日付関数ですが、なぜ、xid
> をage()関数を使用して表現す
> > るのでしょうか?
>

> 引数が日付とXIDとで異なる関数としてオーバーロードされています。
> =# \df age
> 関数一覧
> スキーマ | 名前 | 結果のデータ型 |
> 引数のデータ型 | 型
>
------------+------+----------------+----------------------------------------------------------+----------------
> pg_catalog | age | interval | timestamp with time zone
> | normal(通常)
> pg_catalog | age | interval | timestamp with time zone,
> timestamp with time zone | normal(通常)
> pg_catalog | age | interval | timestamp without time zone
> | normal(通常)
> pg_catalog | age | interval | timestamp without time zone,
> timestamp without time zone | normal(通常)
> pg_catalog | age | integer | xid
> | normal(通常)
> (5 行)
>

最新のpostgresバージョンと動作が違うかもしれませんが、

http://powergres.sra.co.jp/manual/Plus/Linux/V11/routine-vacuuming.html
の 8.2.3. トランザクション ID の送り込み失敗の防止 に
「データベースの pg_database 行の datfrozenxid フィールドは、データベース
全体に対するバキューム操作 (つまり、特定テーブルの指定のない VACUUM) が完
了した時に更新されます。このフィールドに保存された値は、VACUUM コマンドで
使用された、凍結用の切捨て XID です」
という記述があります。

1. VACCUMを実行すると、現在のXIDから、
  どれくらい前から、凍結されるのでしょうか?

2. そして、それは、どれくらい量 凍結されるのでしょうか?
  (例えば、現在のXIDが20億だったとして、10億前から、10億分 
   凍結されるのでしょうか?)

3. age(datfrozenxid) で表示される値は、
  現在のXIDが20億として、凍結されているXIDが13億より前からだとしら、
  7億(20-13)と表示されるという事でしょうか?

4. 現在のXIDは、xmax で知ることができるという理解でよいでしょうか?

5.XIDは、postgres内で唯一の番号が付くのでしょうか?
  postgresの中にテーブルやデータベースが複数存在する時に、
  最大のXIDを。すべての中で、最大のXIDを表示する方法はあるでしょうか?
  (それとも、XIDは、テーブル内、又は データベース内 で、それぞれ番号

  付くのでしょうか?)


--------------------------------------
Get the new Internet Explorer 8 optimized for Yahoo! JAPAN
http://pr.mail.yahoo.co.jp/ie8/


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




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