[pgsql-jp: 26132] Re: コンカレントバキュームについて

sugita @ sra.co.jp sugita @ sra.co.jp
2002年 5月 25日 (土) 01:53:07 JST


  杉田です。

From: Jun Kitamura <kitamura @ zoozee.jp>
Subject: [pgsql-jp: 26129] Re: コンカレントバキュームについて
Date: Sat, 25 May 2002 01:04:53 +0900

;;; >   辿ってみるとコンカレントバキュームで始まって、食い尽くしに流れているのに気が
;;; > 付きませんでした。
;;; 
;;; え?え?そうなんですか?
;;; コンカレントバキュームって、テーブルにロックをかけることなく、トランザク
;;; ションと vacuum を同時に(concurrent)実行する、という機能を指すんじゃな
;;; いんですか?

  VACUUM がコンカレントに実行できるということ自体とトランザクションの食い尽く
しの回避は別ということです。

;;; vacuum を実行しているトランザクション(T1) と、同時に実行されているトラン
;;; ザクション(T2,T3,T4・・・Tn) の関係において、Tn でトランザクションID の食
;;; いつくしが発生してしまうと(トランザクションID が 0 に戻って) vacuum を実
;;; 行しているトランザクションは、 Tn が更新するレコードを古い(過去の)トラン
;;; ザクションと誤認して(消すなりその領域を再利用するなりして)しまいませんか??

  トランザクションの食い尽くしは VACUUM と関係なく起こります。

;;; その誤認を防ぐために FrozenID=2 が導入されましたよね(そして普通のトランザ
;;; クションは 3 から再スタート)。

  再スタートというよりも、0xFFFFFFFF と 3 は環状に繋がっていて、値そのものでの
整数としての大小関係はなく、2^31 の剰余での順序比較で、ぐるぐるとまわり続ける
というのが合っています。そして、1 と 2 は特別に 3〜0xFFFFFFFF の XID のどれよ
りも小さいとみなします。


Kenji Sugita
sugita @ sra.co.jp



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