[pgsql-jp: 40357] Re: vacuumdbでもI/O

加藤 健太 kenta @ diverta.co.jp
2010年 8月 22日 (日) 04:52:16 JST


笠原様

ありがとうございます!DBのスキーマの変更は更新として認識される
のでしょうか?
例えば、レコード数1万件のテーブルで、カラムを1件追加すると、1万件更新し
たことになるのでしょうか?


On Fri, 20 Aug 2010 20:26:34 +0900
Tatsuhito Kasahara <kasahara.tatsuhito @ oss.ntt.co.jp> wrote:

> こんばんは、笠原と申します。
> 
> 加藤 健太 wrote:
> > そこにWALファイルもあるのですが、vacuumの時にファイルの書き込みなどは行
> > われるのでしょうか?
> VACUUM 時には、
> ・不要なレコードを掃除したページのイメージ
> ・上記のページ操作を記録したWAL
> が書き込みされます。
> 
> もし、"デフォルト以外のテーブルスペース"に置いたテーブルへの
> VACUUM にて、"デフォルトのテーブルスペース"へ書き込みが発生
> しているようであれば、WAL の書き込みの影響だと思います。
> 
> 基本的に、更新が走らない DB であれば、VACUUM をしても書き込みは
> ほとんど発生しません。
> 
> ただし、更新されていない DB であっても、古いトランザクションで挿入された
> データが FREEZE されずに残っていると、データの書き込みが発生します。
> 一度 FREEZE されたレコードは、以降 FREEZE 対象にはなりません。
> 
> # FREEZE 処理は、VACUUM 中に行われる処理です。古いトランザクションで
>   挿入されたレコードに特別な ID を振って"必ず可視"である、という情報を
>   付与する操作です。そのため、データの更新が発生します。
> 
> (参考)
> http://www.postgresql.jp/document/current/html/routine-vacuuming.html#VACUUM-FOR-WRAPAROUND
> 
> -- 
> NTT OSSセンタ
> 
> 笠原辰仁



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