| PostgreSQL: Das Offizielle Handbuch | ||||
|---|---|---|---|---|
| Zurück | Schnell zurück | Schnell nach vorne | Nach vorne | |
ANALYZE sammelt Statistiken über den Inhalt von Tabellen in der Datenbank und speichert die Ergebnisse in der Systemtabelle pg_statistic. In der Folge verwendet der Anfrageplaner die Statistiken um bei der Bestimmung des effizientesten Ausführungsplan für Anfragen zu helfen.
Ohne Parameter untersucht ANALYZE jede Tabelle in der aktuellen Datenbank. Mit Parameter untersucht ANALYZE nur die angegebene Tabelle. Es ist außerdem möglich eine Liste von Spaltennamen anzugeben, wodurch dann nur Statistiken für jene Spalten gesammelt werden.
Zeigt Fortschrittsmeldungen an.
Der Name (möglicherweise mit Schemaqualifikation) einer bestimmten Tabelle, die analysiert werden soll. Ohne diese Angabe werden alle Tabellen in der Datenbank analysiert.
Der Name einer bestimmten Spalte, die analysiert werden soll. Ohne diese Angabe werden alle Spalten analysiert.
Es ist zu empfehlen, ANALYZE in regelmäßigen Abständen oder direkt nach größeren Änderungen im Tabelleninhalt auszuführen. Genaue Statistiken helfen dem Planer bei der Wahl des besten Anfrageplans, wodurch sich die Ausführungszeit der Anfragen verbessert. Ein gebräuchliches Vorgehen ist, VACUUM und ANALYZE einmal am Tag, zu einer Zeit mit wenig Betrieb, laufen zu lassen.
Im Gegensatz zu VACUUM FULL benötigt ANALYZE nur eine Lesesperre für die Zieltabelle, kann also gleichzeitig mit anderen Aktivitäten in der Tabelle stattfinden.
Bei großen Tabellen verwendet ANALYZE eine zufällige Auswahl von Zeilen aus der Tabelle, anstatt jede einzelne Zeile zu untersuchen. Dadurch können selbst große Tabellen in kurzer Zeit analysiert werden. Beachten Sie jedoch, dass die Statistiken dann nur Näherungswerte sind und sich bei jedem Durchlauf von ANALYZE geringfügig ändern werden, selbst wenn sich der Inhalt der Tabelle nicht geändert hat. Daraus können sich kleine Veränderungen in den von EXPLAIN angezeigten geschätzten Plankosten ergeben.
Die gesammelten Statistiken enthalten meistens eine Liste der häufigsten Werte in jeder Spalte und ein Histogramm mit der ungefähren Datenverteilung in jeder Spalte. Eine oder beide Informationen können weggelassen werden, wenn ANALYZE sie als uninteressant einschätzt (zum Beispiel gibt es in einer Spalte mit Primärschlüssel keine häufigsten Werte) oder der Datentyp der Spalte die passenden Operatoren nicht unterstützt. Weitere Informationen über die Statistiken gibt es in Kapitel 21.
Der Umfang der Analyse kann mit dem Konfigurationsparameter default_statistics_target eingestellt werden, oder einzeln für jede Spalte mit ALTER TABLE ... ALTER COLUMN ... SET STATISTICS (siehe ALTER TABLE). Dieser Zielwert bestimmt die maximale Anzahl von Einträgen in der Liste der häufigsten Werte und die Anzahl der „Balken“ im Histogramm. Der Standardzielwert ist 10, aber er kann hoch oder herunter gesetzt werden, wodurch die Genauigkeit des Planers gegen die von ANALYZE benötigte Zeit und den von pg_statistic benötigten Platz eingetauscht würde. Insbesondere wird, wenn man den Parameter auf null setzt, das Sammeln von Statistiken für diese Zeile abgeschaltet. Das könnte bei Spalten sinnvoll sein, die niemals in WHERE-, GROUP BY oder ORDER BY-Klauseln einer Anfrage auftreten werden, weil der Planer in dem Fall keine Verwendung für Statistiken über diese Spalten hat.
Das größte Statistikziel unter den zu analysierenden Spalten bestimmt die Anzahl der für die Aufstellung der Statistiken zufällig ausgewählten Spalten. Bei der Erhöhung des Zielwertes erhöht sich die von ANALYZE benötigte Zeit und der Speicherbedarf proportional.
| Zurück | Zum Anfang | Nach vorne |
| ALTER USER | Nach oben | BEGIN |