Erklären Sie mit Indexvorschlägen

10

Gibt es eine (vorzugsweise Open Source) Software, die eine PostgreSQL EXPLAIN analysieren und die erforderlichen Indizes empfehlen kann, die die Abfrage beschleunigen würden?

Adam Matan
quelle

Antworten:

6

Ich habe das buchstäblich erst vor ein paar Minuten gefunden: http://explain.depesz.com/ . Sie fügen die Ergebnisse Ihrer EXPLAIN ANALYZE ein und es zeigt Ihnen, wo es Probleme geben kann (es ist sogar farbcodiert).

Aus dem Hilfebereich ...

EXPLAIN.DEPESZ.com ist ein Tool, um echte Ursachen für langsame Abfragen zu finden. Im Allgemeinen würde man die EXPLAIN ANALYZE-Abfrage verwenden; und lesen Sie die Ausgabe. Das Problem ist, dass nicht alle Teile der Ausgabe für jedermann leicht verständlich sind und es nicht immer offensichtlich ist, ob der Knoten, der in 17,3 ms ausgeführt wird, schneller oder langsamer ist als der Knoten, der in 100 ms ausgeführt wird - angesichts der Tatsache, dass der erste ausgeführt wird 7 mal. Um die Site zu nutzen, gehen Sie einfach auf die erste Seite und fügen Sie dort die Analyse-Ausgabe Ihrer psql ein. Diese Ausgabe könnte so aussehen. Nach dem Hochladen werden Sie zu einer Seite weitergeleitet, die analysiert und schön (na ja, zumindest schön für mich :) angezeigt wird, um wichtige Teile hervorzuheben. Das könnte so aussehen. Randnotiz: Die URL für die kolorierte Ausgabe ist dauerhaft. Sie können es also einfach verwenden, um es anderen zu zeigen - zum Beispiel - für die netten Jungs auf dem IRC-Kanal #postgresql auf freenode. Dieses Diagramm verwendet 4 Farben, um wichtige Dinge zu markieren: weißer Hintergrund - alles ist feiner gelber Hintergrund - gegebener Knoten ist besorgniserregender brauner Hintergrund - gegebener Knoten ist besorgniserregender roter Hintergrund - gegebener Knoten ist sehr besorgniserregend Welche Farbe verwendet wird, wird basierend auf welchem ​​Modus ausgewählt Sie verwenden: "Exklusiv", "Inklusiv" oder "Zeilen X".

Philip Southam
quelle
1

Mir ist kein Tool für Postgres bekannt, das dies algorithmisch ausführt, und meiner Meinung nach ist das menschliche Gehirn (und oft ein bisschen Experimentieren in einer Entwicklungsumgebung) hier wirklich das einzig geeignete Tool. Es gibt viele Faktoren, einschließlich der Frage, ob der Abfrageplaner überhaupt der Meinung ist, dass Ihr Index die Verwendung wert ist. Dies hängt davon ab, wie Ihre Installation die Einstellungen des Abfrageplaners und die Größe / Statistik der betreffenden Tabelle angepasst hat ( s).

Die beste Empfehlung, die ich aussprechen kann, ist, eine EXPLAIN ANALYZE(dies ANALYZEist wichtig - es gibt Ihnen Abfrage- und Unterplanlaufzeiten), die Ergebnisse selbst zu betrachten und die größte Zahl anzugreifen, die Sie zuerst sehen. Sie könnten wahrscheinlich einen Parser schreiben, um die EXPLAIN-Ausgabe aufzubrechen (insbesondere in 9.0 mit JSON-Ausgabe), aber ich kenne noch niemanden, der sich damit befasst hat (dies ist im Grunde das, was Optimierer für MS-SQL tun ...).

voretaq7
quelle
0

Nichts für die Produktion, aber für Neugierige gibt / gab es ein Forschungsprojekt, um so etwas umzusetzen. Suchen Sie nach "PostgreSQL Index Advisor".

Peter Eisentraut
quelle