pg_stat_statements: Wichtigste Abfragen
Aktivieren Sie pg_stat_statements, finden Sie die aufwendigsten Abfragen nach Gesamtlaufzeit und optimieren Sie sie gezielt.
pg_stat_statements: Wichtigste Abfragen ist eine kostenlose SQL Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des SQL Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.
Was pg_stat_statements liefert
Eine fortlaufend wachsende Aufzeichnung jeder Abfrage, nach ihrer Struktur normalisiert — das nützlichste einzelne DBA-Tool in PostgreSQL.
Aktivieren
Es handelt sich um eine contrib-Erweiterung. Fügen Sie sie zu shared_preload_libraries hinzu und starten Sie den Server neu:
-- postgresql.conf
shared_preload_libraries = 'pg_stat_statements'
-- After restart:
CREATE EXTENSION pg_stat_statements;Top-Abfragen nach Gesamtdauer
Die Abfrage „Wofür wird meine CPU verbraucht?“:
SELECT calls,
total_exec_time,
mean_exec_time,
rows,
query
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 10;Langsame Abfragen pro Aufruf
Abfragen, die bei jedem Aufruf langsam sind:
SELECT mean_exec_time, calls, query
FROM pg_stat_statements
WHERE mean_exec_time > 100
ORDER BY mean_exec_time DESC
LIMIT 20;Häufige, günstige Abfragen
Eine Million Abfragen mit jeweils 1 ms sind trotzdem ein Problem:
SELECT calls, mean_exec_time, total_exec_time, query
FROM pg_stat_statements
ORDER BY calls DESC
LIMIT 20;Normalisierung
pg_stat_statements gruppiert Abfragen nach ihrer normalisierten Struktur — Literale werden durch $N ersetzt. Dadurch werden „SELECT * FROM users WHERE id = 1“ und „= 2“ zu derselben Zeile.
Statistiken zurücksetzen
Beginnen Sie nach einem Deployment mit einer leeren Statistik, um das neue Verhalten zu messen:
SELECT pg_stat_statements_reset();I/O- und CPU-Zeit
Neuere PG-Versionen teilen die Ausführungszeit auf. shared_blks_hit / shared_blks_read geben Hinweise darauf, ob die Daten aus dem Cache oder von der Festplatte gelesen werden:
SELECT query, shared_blks_hit, shared_blks_read,
shared_blks_read::FLOAT / NULLIF(shared_blks_hit + shared_blks_read, 0) AS read_ratio
FROM pg_stat_statements
ORDER BY shared_blks_read DESC LIMIT 20;JIT- und Planungszeit
PG 13+ stellt total_plan_time bereit. Manche Abfragen verbringen mehr Zeit mit der PLANUNG als mit ihrer Ausführung — normalerweise ein Hinweis darauf, Prepared Statements zu verwenden.
Statistiken pro Datenbank / pro Benutzer
pg_stat_statements gilt für den gesamten Cluster. Filtern Sie nach den Spalten dbid und userid, um Ansichten pro Datenbank bzw. pro Benutzer zu erhalten.
Kombination mit EXPLAIN ANALYZE
pg_stat_statements sagt Ihnen, WELCHE Abfragen langsam sind. EXPLAIN ANALYZE sagt Ihnen, WARUM.
Hinweise
- Die Aufsummierung pro Datenbank und pro Benutzer kann Probleme verbergen — betrachten Sie die Gesamtsumme
- Die Zeit pro Zeile wird nicht erfasst, sondern nur die Gesamtdauer pro Aufruf
- Die Statistik wird beim Neustart oder durch einen Reset-Aufruf zurückgesetzt
Zusammenfassung
pg_stat_statements ist in der Produktion unverzichtbar.
- Top nach Gesamtdauer → größte Optimierungsmöglichkeiten
- Top nach Mittelwert → anhaltende Langsamkeit
- Top nach Aufrufen → Häufigkeitsproblem
- Für Lösungen mit EXPLAIN kombinieren
Kurzer Check
Sie haben pg_stat_statements aktiviert. Welche Abfrage sollten Sie untersuchen, um die größten Performance-Verbesserungen zu erzielen?
Häufig gestellte Fragen
Ist die Lektion „pg_stat_statements: Wichtigste Abfragen“ kostenlos?
Ja — der vollständige Text von „pg_stat_statements: Wichtigste Abfragen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des SQL Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „pg_stat_statements: Wichtigste Abfragen“?
Aktivieren Sie pg_stat_statements, finden Sie die aufwendigsten Abfragen nach Gesamtlaufzeit und optimieren Sie sie gezielt. Du übst SQL Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um SQL Academy zu starten?
Keine Vorkenntnisse erforderlich. SQL Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „pg_stat_statements: Wichtigste Abfragen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser SQL Academy-Lektion Code schreiben und ausführen?
Ja. Jede SQL Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- pg_stat_statements: Wichtigste Abfragen
- pgBadger für die Log-Analyse
- Connection Pooling: PgBouncer
- Kapazitätsplanung und Bloat-Prüfungen