2009年1月20日火曜日

bash の for でワンライナー、Postgres統計情報の連続書き出し

メモエントリ
 

postgresの統計テーブルを調査したかったのだが、現状しか分からんので、一定期間ログに吐き出させることにした。
 

毎回DBに挿入するのが正しい解析の仕方なんだろうけど、今回そこまでいらないので 5秒おきに120回、10分間にわたり状態をテキストに書き出す。
 

とりあえず全体のステータスとロック状況を取る。
[sourcecode language='bash']for i in $(seq 1 120) ;do psql -U root template1 -c "select * from pg_stat_database">>pg_stats ; sleep 5 ;done;
for i in $(seq 1 120) ;do psql -U root template1 -c "select * from pg_locks">>pg_lock ; sleep 5 ;done;
# ※統計情報の採集は有効にしておく[/sourcecode]
 

シェルスクリプトでやるのも面倒なので、for を一行に書いて対応。使いまわすためにエントリ。
(ワンライナーというほど大げさでもなかった)
 

リアルタイムで何かしらを監視する時には watch コマンドもよく使うけど、実行回数指定のやり方がない模様なのでログ取得むきでないんだよね。