こんにちは。

RedHatLinux+PostgreSQLを使ったWebシステムをある会社に開発してもらったのですが、
検索のパフォーマンスがとても悪く問題になっています。

まずは、システムのどの部分がボトルネックになっているかを調査したいのですが、どのような
ソフト、またはコマンドを使って調査すればよいのでしょうか?

それと、ボトルネックになっている部分をどのように改善するかを教えていただけますでしょうか。

また、開発してもらったソースは公開されておらず、オブジェクトでの提供になっており
SQL文が分かりません。

実行されたSQL文を解析する方法はありますでしょうか?

よろしくお願いいたします。

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/03/10 01:17:18
  • 終了:2010/03/17 01:20:05

回答(3件)

id:kick_m No.1

kick_m回答回数1372ベストアンサー獲得回数542010/03/10 02:10:04

ポイント27pt

常識的にはwebサーバーのログとか、システムログとかでしょうが。

どっちにしsqlを使ったものだと、サーバーの性能にもよりますが、そんなに早くは表示されませんよ。やや遅いのは普通だと思います。データーの量にもよるでしょうし。

ベンチマークツール

http://www.atmarkit.co.jp/fdb/rensai/postgresql/02/pgtune2-1.htm...

id:Km1967 No.2

Km1967回答回数224ベストアンサー獲得回数352010/03/10 02:36:14

ポイント27pt

http://q.hatena.ne.jp/1268035527 の原因?


ボトルネックになっている部分をどのように改善するか

結論から言えば「ソースが公開されておらず修正できないという時点で改善は非常に難しい」だろう。

仮にSQLが悪いと判明したところで修正はどうする? ミドルウェア側が悪いとなったら作り直す? 何をしても対処できないのではないか?

さらに厳しい事を言うが「遅い」だけでは話にならない。テーブル構成と格納してあるデータの件数、そこからどのような条件で抜き出す際に、どの程度の時間を要しているかが判らないと、本当に遅いのか、そういうものなのかの判別もしようが無いし、公の場所に出せとも言えんから対処に困る。


経験則だが、よほど馬鹿げたSQLでもないかぎり多くの場合はミドルウェア側の原因がほとんどだったりする。

WEB出力用にTABLEタグで表にするだけでも下手な組み方をしているとバカみたいに時間を食う。開発言語すら書いていないがソースが見れないとなるとjavaででも書いてあるのだろうか?だとすればJVM周りのチューニングもいるのではないか?


余談はさておき、PostgrSQL にだけ話を集中することにするがパフォーマンスのほとんどはメモリ関係の設定によるものが大きい。デフォルトではその性能は発揮できない。その他もろもろの資料は非常に整っているが、ケースバイケースの部分が多く、端的に語るのはちと難しい。マニュアルから一例を下記にあげよう。

http://www.postgresql.jp/document/pg841doc/html/performance-tips...

http://www.postgresql.jp/document/pg841doc/html/monitoring.html

http://www.postgresql.jp/document/pg841doc/html/diskusage.html

http://www.postgresql.jp/document/pg841doc/html/wal.html

http://www.postgresql.jp/document/pg841doc/html/storage.html

http://www.postgresql.jp/document/pg841doc/html/planner-stats-de...


実行されたSQL文を解析する方法

postgresql.conf で log_min_duration_statement を設定して時間のかかっているSQLをログに吐き出させるのは悪い事ではないだろう。ただ、非常識なほど出力される可能性があるから、まずは 1000(単位はms)などから初めて徐々に数値を下げていけばいいだろう。

この方法で問題になるのは一回のセッション中に短いSQLが多数発行される場合への対処が難しいという事だ。どれだけのログが吐き出されるか判ったもんじゃないし、それをまとめるとなれば、最初の話に戻ってソースが判らないとという事に戻ってしまう。

http://www.postgresql.jp/document/pg841doc/html/runtime-config-l...


まぁ、あまり役には立たんと思うが、ひとまずこんなところか?

id:taknt No.3

きゃづみぃ回答回数13539ベストアンサー獲得回数11982010/03/10 09:04:49

ポイント26pt

普通は チューニングというのを 行います。

http://php.y-110.net/wiki/index.php?PostgreSQL%A1%A7%A5%C1%A5%E5...

http://www.stackasterisk.jp/tech/dataBase/postgresTuning01_01.js...

もちろんチューニングの一部にSQLの改善もありますが、それは 開発側に依頼すべきですね。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません