2010年8月22日

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

石井です。

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

カラム追加の際にデフォルト値を設定したりすると、新しいテーブルにカラム

を追加しながら元データを丸ごとコピーするので、かなり大量の更新が発生す
るようです。
# ただ、その際にWALの大量書き込みが発生するかどうかはわかりません。
# もしかしたら賢く最適化しているかも。

デフォルト値を設定しないなど、物理的にタプルを拡張する必要がない場合は、
システムカタログの修正くらいしか更新が発生しないので、WALの書き込みは
わずかだと思います。
--
Tatsuo Ishii
SRA OSS, Inc. Japan
English: http://www.sraoss.co.jp/index_en.php
Japanese: http://www.sraoss.co.jp

> On Fri, 20 Aug 2010 20:26:34 +0900
> Tatsuhito Kasahara <kasahara.tatsuhito@xxxxx> 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センタ
> >
> > 笠原辰仁
>


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




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