#!/bin/bash TRIALS=2; INPUT_FROM_FILE="" OUTPUT_TO_FILE="" while getopts "i:o:" Option do case $Option in i ) INPUT_FROM_FILE="True"; INPUT_FILE=$OPTARG;; o ) OUTPUT_TO_FILE="True"; OUT_FILE=$OPTARG;; esac done shift $(($OPTIND - 1)) if [ $INPUT_FROM_FILE ] then echo "Reading from file $INPUT_FILE" COMMAND=`more $INPUT_FILE` else COMMAND="$@" fi; echo "$COMMAND" for trial in `seq $TRIALS` do # Send query if [ $OUTPUT_TO_FILE ] then psql --host $HOST --username $USER --dbname $DB --command " EXPLAIN ANALYZE $COMMAND" | awk '/ Total runtime: / {print $3}' >> $OUT_FILE else psql --host $HOST --username $USER --dbname $DB --command " EXPLAIN ANALYZE $COMMAND" | awk -f total_runtime.awk fi; # Restart server /etc/init.d/postgresql-8.4 restart # Clear OS cache. See: http://stackoverflow.com/questions/599719/how-to-clean-caches-used-by-the-linux-kernel sync sysctl -w vm.drop_caches=3 done