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?
quelle
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?
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.
gdb
Die Tracepoints oder perf
Userspace-Tracepoints sind für Sie sehr nützlich.
Sie können auch die detaillierte Debug-Protokollierung und einige der Trace-Parameter aktivieren, um postgresql.conf
dann 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.