気まぐれSE日記

地方でエンジニアしてます

PostgreSQL

某自社開発システムでPostgreSQL7.2.8を使用してます。
(互換性の問題でやむを得ず使用中)


昔のPostgreSQLは、vacuumdbをしてないとすぐ遅くなってしまうので
一日一回cronでvacuumdb -a -f -z でvacuumさせていたんですが、
DBがロックする不具合が出てしまいます。

一旦こうなると、DBがロックされるのでPostgreSQLのサービスを
再起動しない限りはSELECTなどのSQLが全く受け付けられなくなります。

困ったもんです。
どういう原因でこうなるのかは今のところ不明。
再現したり、しない環境もあるし。

ログやps コマンドで確認するとこんなようなメッセージが出てます。


postgres:database database SELECT waiting
....
postgres:database database ![local] LOCK TABLE waiting

一応、


vacuumdb -a -f -z


は、やめて


vacuumdb database


としてみて様子を見ています。