postgresqlの速度計測
といっても、クエリを一定回数繰り返してかかった秒数の平均をエコーバックするだけ。
bashで作成しましたが、小数の計算ってどうやるんだ?とちょっと試行錯誤。bcを使えばいいようです。
できたのはこんなの。
#!/bin/bash export PGPASSWD=password sum="0.0" count=5 i=0 while [ $i -lt $count ] ; do value=$(psql -U role_name -w db_name < test_query.sql | grep '^時間' | awk '{print $2}') sum=$(echo "$sum+$value" | bc) i=$(( $i + 1 )) done echo "scale=3; $sum/$count" | bc
test_query.sqlにクエリを記述。一行目に\timingと書くと、クエリ処理にかかった時間をミリ秒で出してくれます。
\timimg SELECT count(*) from hoge;
でもって、出てきた秒数を足しあげて、繰り返し回数で除算。
繰り返しの回数をcountのところへかけばOK。
ちょいとハマったのがwhile[]のところ。i=0って行がないと、while中の-lt条件文でエラーになります。
$countは数字で定義されているけれども、$iはまだwhileがある行では未定義なので比較できないってエラーになるようですね。