Wie tauche ich in den Optimierer von PostgreSQL ein und verfolge jeden Schritt, der zur Optimierung der Abfrage erforderlich ist?

8

Genau wie die MEMO-Struktur in SQL Server, die eine Art "Papierspur" von Schritten darstellt, die der Optimierer bei der Optimierung der Abfrage unternimmt. Hat PostgreSQL eine ähnliche Struktur, die die Schritte des Optimierers aufzeichnet?

zli89
quelle

Antworten:

3

Nein, es gibt keine detaillierte Prüfungs- / Berichtsstruktur oder -funktion für Optimierer.

Ihr bestes Werkzeug ist 'gdb'. Im Gegensatz zu MS SQL Server ist PostgreSQL Open Source. Sie können einfach mit aktivierten Debug-Symbolen erstellen, einen Debugger anhängen und genau verfolgen, was er tut.

Das heißt natürlich nicht, dass es einfach ist. Ein vordefinierter Satz von Haltepunkten und GDB-Makros, um eine Spur dessen zu erstellen, was der Planer / Optimierer tut, wäre sehr schön. Ein solches Tool ist mir derzeit nicht bekannt.

gdbDie Tracepoints oder perfUserspace-Tracepoints sind für Sie sehr nützlich.

Sie können auch die detaillierte Debug-Protokollierung und einige der Trace-Parameter aktivieren, um postgresql.confdann die resultierenden detaillierten Protokolldateien zu untersuchen.

In den häufig gestellten Fragen zu PostgreSQL-Entwicklern finden Sie einige Dokumentationen (zu denen ich Informationen zum Dumping von Planbäumen usw. hinzugefügt habe): https://wiki.postgresql.org/wiki/Developer_FAQ . Dies kann nützlich sein. Sie sollten auch die wichtigsten Entwicklerdokumente lesen.

Craig Ringer
quelle