[pgsql-jp: 33246] Re: ロックしないvacuum

TANIDA Yutaka tanida @ sra.co.jp
2004年 6月 15日 (火) 13:09:37 JST


谷田です。

On Tue, 15 Jun 2004 12:13:30 +0900
seiji yamamoto <yamamoto @ bitmap.co.jp> wrote:

> 今日こんなページがアップされてました。
> http://www.atmarkit.co.jp/flinux/special/ctl_rdbms/rdbms05.html
> 
> ここの解説の中で、
> vacuum中はデータベースを使用できないとの事がかかれてました。

誤解です。データベースを止めなければいけないとかデータベースをロックする
とか、この点に対してはなぜか皆さん勘違いが多いですね。

正確なのは、「VACUUM FULLをするときは完全にテーブルをロックしてしまう」
です。PostgreSQLには、データベースを使用不可能にする仕組みはありません。

この手の誤解で一番楽しいのは「VACUUMのためにはデータベースを停止させなけ
ればならない」ですね。停止させたらVACUUMできません!

> 7.2からテーブルをロックせずvacuumが行われるので、

それは厳密には違います。ShareUpdateExclusiveLockという、専用のロックを取
得します。

> これに関しては、当てはまらないと私は思っていたのですが・・・
> 記憶が確かならばスキーマの変更は出来なかった気はしますが、
> 他のことは全てvacuum中でも可能だと思っています。

その理解であっています。

> なるべくマニュアルにも目を通したつもりですが、
> 何か私は勘違いをしているのでしょうか?

心配しなくても、勘違いは上記の記事のほうです。

-- 
TANIDA Yutaka <tanida @ sra.co.jp>




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