Vrijedi za PG v9.2
CREATE extension pg_stat_statements;
Ukljući sakupljane statistike o upitima.
SELECT (total_time / 1000 / 60) as total_minutes, (total_time/calls) as average_time, query FROM pg_stat_statements ORDER BY 1 DESC LIMIT 100;
Upit prikazuje:
1. Koliko se dugo upit odvijao na serveru (ukupno)
2. Koliko se prosjećno upit odvijao na serveru (milisekunde)
3. Sam upit
SELECT sum(heap_blks_read) as heap_read, sum(heap_blks_hit) as heap_hit, (sum(heap_blks_hit) - sum(heap_blks_read)) / sum(heap_blks_hit) as ratio FROM pg_statio_user_tables;
Upit prikazuje Cache hit rate, 99% je ciljano.
SELECT relname, 100 * idx_scan / (seq_scan + idx_scan) percent_of_times_index_used, n_live_tup rows_in_table FROM pg_stat_user_tables WHERE seq_scan + idx_scan > 0 ORDER BY n_live_tup DESC;
Korištenje Indexa na tablici. 99% na tablici sa preko 10.000 redova, sve ispod toga treba istražiti i dodati nove indexe.
Izvori:
http://craigkerstiens.com/2012/10/01/understanding-postgres-performance/
http://craigkerstiens.com/2013/01/10/more-on-postgres-performance/