/
PostgreSQL EXTENSION pg_stat_statements
PostgreSQL EXTENSION pg_stat_statements
Zunächst in der postgresql.conf den Parameter
shared_preload_libraries = 'pg_stat_statements'
Danach den Server restarten und den View mit dem Statement aktivieren.
CREATE EXTENSION pg_stat_statements;
Jetzt können die Daten ausgewertet werden.
SELECT pg_stat_statements.userid,
pg_stat_statements.dbid,
pg_stat_statements.toplevel,
pg_stat_statements.queryid,
pg_stat_statements.query,
pg_stat_statements.plans,
pg_stat_statements.total_plan_time,
pg_stat_statements.min_plan_time,
pg_stat_statements.max_plan_time,
pg_stat_statements.mean_plan_time,
pg_stat_statements.stddev_plan_time,
pg_stat_statements.calls,
pg_stat_statements.total_exec_time,
pg_stat_statements.min_exec_time,
pg_stat_statements.max_exec_time,
pg_stat_statements.mean_exec_time,
pg_stat_statements.stddev_exec_time,
pg_stat_statements.rows,
pg_stat_statements.shared_blks_hit,
pg_stat_statements.shared_blks_read,
pg_stat_statements.shared_blks_dirtied,
pg_stat_statements.shared_blks_written,
pg_stat_statements.local_blks_hit,
pg_stat_statements.local_blks_read,
pg_stat_statements.local_blks_dirtied,
pg_stat_statements.local_blks_written,
pg_stat_statements.temp_blks_read,
pg_stat_statements.temp_blks_written,
pg_stat_statements.blk_read_time,
pg_stat_statements.blk_write_time,
pg_stat_statements.wal_records,
pg_stat_statements.wal_fpi,
pg_stat_statements.wal_bytes
FROM pg_stat_statements(true) pg_stat_statements(userid, dbid, toplevel, queryid, query, plans, total_plan_time, min_plan_time, max_plan_time, mean_plan_time, stddev_plan_time, calls, total_exec_time, min_exec_time, max_exec_time, mean_exec_time, stddev_exec_time, rows, shared_blks_hit, shared_blks_read, shared_blks_dirtied, shared_blks_written, local_blks_hit, local_blks_read, local_blks_dirtied, local_blks_written, temp_blks_read, temp_blks_written, blk_read_time, blk_write_time, wal_records, wal_fpi, wal_bytes);
Um die langsamsten Queries zu finden reicht folgendes Statement:
SELECT substring(query, 1, 50) AS short_query,
round(total_exec_time::numeric, 2) AS total_time,
calls, rows,
round(mean_exec_time::numeric, 2) AS mean,
round((100 * total_exec_time /
sum(total_exec_time::numeric) OVER ())::numeric, 2) AS percentage_overall,
query
FROM pg_stat_statements(true)
WHERE query NOT LIKE '%/*pga4dash*/%'
ORDER BY total_time DESC
LIMIT 50;
Finde Tabelle mit fehlende Indizes mit folgendes Statement:
SELECT schemaname, relname, seq_scan, seq_tup_read,
idx_scan, seq_tup_read / seq_scan AS avg
FROM pg_stat_user_tables
WHERE seq_scan >0
ORDER BY seq_tup_read DESC
LIMIT
Reset:
SELECT pg_stat_statements_reset();
, multiple selections available,
Related content
Flaschenhälse in der PostgreSQL mit pg_activity finden
Flaschenhälse in der PostgreSQL mit pg_activity finden
More like this
Docker MyOdoo Postgres
Docker MyOdoo Postgres
More like this
Syscoon Module Finanzbuchhaltung / DATEV
Syscoon Module Finanzbuchhaltung / DATEV
More like this
PO-Dateien / Sprachdateien
PO-Dateien / Sprachdateien
More like this
Fehlende Rechtevergabe verursachen Warnungen
Fehlende Rechtevergabe verursachen Warnungen
More like this
Manueller Restore einer Odoo Datenbank inkl. Filestore auf Basis von Docker
Manueller Restore einer Odoo Datenbank inkl. Filestore auf Basis von Docker
More like this