[pgsql-jp: 33255] Re: ロックしないvacuum
ISHIDA Akio
iakio @ mono-space.net
2004年 6月 15日 (火) 13:53:30 JST
こんにちは。石田@苫小牧市です。
Hidekazu Ikeda wrote:
> この記事を書いた人が知り合いではありませんが、、
> 現状の vaccum では以下のように書いていますね。
>
> http://osb.sra.co.jp/PostgreSQL/FAQ/faq.php#16
>
> 記事の表現としては、「圧縮付き vaccum」を前提としている
> なら使えない、って意味とも取れるかも(推測)。
>
>
>>「使用できない」という抽象的な表現なので
>>何とも言えないのですが、
>>7.2からテーブルをロックせずvacuumが行われるので、
>>これに関しては、当てはまらないと私は思っていたのですが・・・
>
>
> うーん、上記の FAQ から読み取ると、、
>
> テーブルロックを 7.2以降で vaccum 処理で行わない、
>
> とも読めないのですが、、
>
> - 7.2 以降の「圧縮無し vaccum」はテーブルロックをまったく
> 行わないのでしょうか?
> ※情報ポインタを教えてください。
http://www.postgresql.jp/document/pg742doc/html/explicit-locking.html
とかでいいでしょうか。
谷田さんもおっしゃっていたように、実際には SHARE UPDATE EXCLUSIVE
モードのロックがかかるので、
- 明示的なロック(SHARE UPDATE EXCLUSIVE、SHARE、
SHARE ROW EXCLUSIVE、EXCLUSIVE、ACCESS EXCLUSIVE)
- ALTER TABLE、DROP TABLE、REINDEX、CLUSTER、VACUUM FULL
- あと、同時に同じテーブルを vacuum
は待たされることになるようです。
> - 少なくとも、圧縮付きの vaccum 処理では駄目っぽいのでは?
そうですね。そういう意味では、元記事の
> PostgreSQLでは定期的にvacuumコマンドを実行し、
> 削除フラグの立った領域を物理的に削除(圧縮)する必要がある。
という部分が間違いで、定期的に (圧縮無しの) vacuum を実行していれば、
データサイズの肥大化を防げるので、圧縮する必要も通常無いという
ことだと思います。
http://www.postgresql.jp/document/pg742doc/html/maintenance.html
pgsql-jp メーリングリストの案内