pqa-1.6をPostgreSQL8.1で使う方法(間違ってるかも)

Posted on 9 月 12, 2007 | Category: PostgreSQL | このエントリーを含むはてなブックマーク この記事をクリップ! コメントを見る

SQLのボトルネックを探すソフトと自分は勝手に認識してるpqaですが、
設定方法が古いPostgreSQL(多分7.4)用の物しか見つけられなかったので

8.1用の設定方法のメモ(8.2は試してません)

出されるログは

######## Overall statistics
702 queries (428 unique), longest ran in 0.370524 seconds), parsed in 0.092765 seconds
######## Queries by type
SELECTs: 650  (93%)
INSERTs: 51   (7%)
UPDATEs: 1  (0%)
######## Queries that took up the most time
0.375 seconds: SELECT count(*) AS count FROM users WHERE status=’A’ and user_id != 100
0.371 seconds: SELECT 1 FROM ONLY “public”.”country_code” x WHERE “ccode” = $1 FOR UPDATE OF x
0.195 seconds: INSERT INTO activity_log (day,hour,group_id,browser,ver,platform,time,page,type) VALUES (20040507,’12′,’5′,’IE’,'6.0′,’Win’,'1083945958′,’/tracker/index.php’,'0′);

0.168 seconds:          SELECT sum(commits) AS commits,sum(adds) AS adds        FROM stats_cvs_group    WHERE group_id=’187′
######## Slowest queries
0.371 seconds: SELECT 1 FROM ONLY “public”.”country_code” x WHERE “ccode” = $1 FOR UPDATE OF x
0.195 seconds: INSERT INTO activity_log (day,hour,group_id,browser,ver,platform,time,page,type) VALUES (20040507,’12′,’5′,’IE’,'6.0′,’Win’,'1083945958′,’/tracker/index.php’,'0′);
0.154 seconds: INSERT INTO activity_log (day,hour,group_id,browser,ver,platform,time,page,type) VALUES (20040507,’12′,’0′,’IE’,'6.0′,’Win’,'1083946204′,’/projects/winjobscheduler/’,'0′);
0.120 seconds:          SELECT sum(commits) AS commits,sum(adds) AS adds        FROM stats_cvs_group    WHERE group_id=’195′
######## Most frequent queries
46 times: SELECT plugin_id, plugin_name FROM plugins
24 times: SELECT substring(d.adsrc for 128) FROM pg_catalog.pg_attrdef d
24 times: SELECT language_id FROM supported_languages WHERE classname=’English’
24 times: SELECT language_code FROM supported_languages WHERE language_id=’1′

こんな感じで見えます、けっこう便利です。

設定方法はまずpostgresql.confの

redirect_stderr = on
log_duration = on
log_statement = ‘all’

に書き換えてログを取るようにします。
デフォルト設定なら/usr/local/pgsql/data/pg_log/の中にログファイルが吐き出されまするようになります。
はじめの設定だと、ファイル名の中に日付以外に時間が入って見づらいので、自分はconfを

log_filename = ‘postgresql-%Y-%m-%d.log’

に設定を変えました。これで一日毎のログが吐き出されます。
一日で何十MBもログが吐き出されるので、開発向けだと思います。

ログの生成方法は

ruby pqa.rb -logtype pglog  -file /usr/local/pgsql/data/pg_log/postgresql-2007-09-11.log

で表示できます。

このままだと使い辛いので、自分の場合は

ruby pqa.rb -logtype pglog -normalize -top 20 -file /usr/local/pgsql/data/pg_log/postgresql-2007-09-11.log > 2007-09-11.log

で使ってます。これだとファイルで保存されるので便利です。
あと今回付けているオプションは
-normalize を掛けることで同じSQLでパラメータの値の違いを無視してるれるので便利
-top 数字 でデフォルト10件の表示を増やしてくれます。

pqaのページ
参考ページ
【PostgreSQLウォッチ】第15回 セキュリティ・パッチとログ解析ツールpqa
PostgreSQL:pqa - Y-110’s Wiki

» Filed Under PostgreSQL

Leave a Reply

Copyright © 2005 Yourcopyright. All Rights Reserved | Design: YGoY