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