Durch einen Vortrag auf der pycon draufgekommen, mal nachzuschaun, wie gut die Indizes
auf unserer zabbix Datebank funktionieren. Die hit ratio kriegt man mit
select 'index hit rate' as name,
(sum(idx_blks_hit)) / sum(idx_blks_hit + idx_blks_read) as ratio from pg_statio_user_indexes;
Leider ignoriert unser postgres die indizes komplett!
SQL never fails to amaze:
In /etc/postgresql/9.1/postgresql.conf eingefuegt:
shared_preload_libraries = 'pg_stat_statements'
Das postgresql-contrib-9.1 Packet installiert,
postgresql neu gestartet,
in der Datenbank als user postgres mit
CREATE EXTENSION pg_stat_statements;
die Extension angelegt (ansonsten gibts die Tabelle einfach nicht),
und mit
select (total_time / 1000 /60) as total,
(total_time/calls ) as avg,
query from pg_stat_statements where query ~ 'select'
order by 1 desc limit 20;
die zaehesten Anfragen an die DB rausgekriegt.