ANALYZE automatisch auf PostgreSQL ausführen?

ANALYZE automatisch auf PostgreSQL ausführen?

ANALYZE <table>;Was ist außer einem Cronjob die einfachste Möglichkeit zur automatischen Ausführung auf einem PostgreSQL 12-Server?

Ich habe eine Anwendung, in die jede Woche routinemäßig Millionen von Zeilen eingefügt werden, und nach etwa einem Monat werden die Abfragezeiten sehr langsam, da die Statistiken für die geänderten Primärtabellen veraltet sind. Das Ausführen ANALYZE <table>;der Tabellen dauert ein paar Minuten und behebt die Leistungsprobleme sofort, aber ich denke, es muss eine Einstellung geben, die ich vornehmen kann, damit dies automatisch vom PG-Server selbst und nicht manuell durchgeführt werden kann?

Antwort1

Es hört sich an, als ob Sie die automatische Vakuumierung deaktiviert hätten. Wäre sie aktiviert, würde sie alle Ihre Tabellen regelmäßig analysieren, um deren Statistiken für den Abfrageplaner zu aktualisieren.

Die einfachste Lösung besteht darin, Autovacuum wieder zu aktivieren. Überprüfen Sie Ihre Datei postgresql.conf auf die Autovacuum-Einstellung.

Antwort2

PostgreSQL verfügt über ein integriertes Autovacuum, das aktiviert und entsprechend Ihren Anforderungen konfiguriert werden sollte. Normalerweise passen Sie *autovacuum_vacuum_threshold * an undautovacuum_analyze_thresholdum das gewünschte Verhalten basierend auf der Anzahl der geänderten Tupel auszulösen.

Sehenhttps://www.postgresql.org/docs/current/routine-vacuuming.html#AUTOVACUUM

verwandte Informationen