[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 メーリングリストの案内