[pgsql-jp: 34362] パフォーマンスチューニング

北村 英志 ekitamura @ valueclick.jp
2004年 12月 1日 (水) 15:28:21 JST


始めまして、北村と申します。


業務でPostgreSQLを使ったウェブアプリケーションを扱っています。
最近日を追えば追うほど(使い続ければ使い続けるほど)、PostgreSQLの速度が遅
くなってきていて、困っています。
これまで2度、データベースをリストアすることで問題を解決してきましたが、
ユーザー数が増えればいずれそういうことをやる余裕もなくなってくるものと思
い、対策を検討しています。

【現象】
とにかく遅い。JOINなどを多用したクエリーでは、20万行のテーブルと3万行の
テーブルの組み合わせでも数十秒かかる場合もあります。EXPLAINコマンドを実
行するとリストアの前後で数百倍違うコストが返ってきます。
上記クエリーのコストはだいぶ遅くなってきている現在、(cost=61511.87..61520.49)
となっています。

【これまでに行った対策】
autovacuumは数時間おきに走らせています。マニュアルでVACUUMも実行しました
が、コストは変わらず(むしろ高くなる場合もあります)。リストアするとやはり
劇的にコストは下がります。
INDEXの作り方も色々工夫して若干の改善は見られましたが、根本的な問題の解
決にはなっていないようです。
その他システムのチューニング(postgres.conf等)に関してはまだ手をつけてい
ません。(まずは勉強から、という状態ですので・・・)

【環境】
OS:		Linux 9
WebServer:	Apache 1.3.29
Database:	PostgresQL 7.4.1


かなり検索もしましたし、こちらの過去ログも参照させて頂きましたが、よい情
報を見つけることはできませんでした。元々このシステムを設計・開発した人間
が会社を辞めてしまったため、他に尋ねる相手もおらず、苦慮しています。

何か良いアドバイスをお持ちの方がいらっしゃいましたらご教示いただけないで
しょうか?
よろしくお願いいたします。



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