Postgres und MySQL

EXPLAIN-Plan visualisieren, die langsame Stelle finden.

Mit LetDraw kannst du einen EXPLAIN-Plan visualisieren: Füg einen Postgres- oder MySQL-Plan als JSON ein und LetDraw zeichnet den Ausführungsplan als Baum, ein Kasten pro Planknoten mit Kosten, Zeilen und Laufzeit. Eine Heatmap färbt jeden Knoten nach der Zeit oder den Kosten, die er selbst beiträgt, sodass der langsame Abfrageschritt rot aufleuchtet.

Langsame Abfrage · EXPLAIN ANALYZE
Sort cost 1290 rows 120 52.6 ms Nested Loop cost 1240 rows 120 49.8 ms Seq Scan · orders cost 912 rows 4800 38.2 ms Index Scan · users cost 8 rows 1 9.6 ms schneller langsamer
Schritt für Schritt

Vom Ausführungsplan zum Bild in vier Schritten

Führ EXPLAIN als JSON aus, füg das Ergebnis ein und lies den Baum statt einer Textwand.

  1. Plan als JSON holen

    Führe in Postgres EXPLAIN (FORMAT JSON) vor deiner Abfrage aus oder EXPLAIN (ANALYZE, FORMAT JSON) für echte Laufzeiten. In MySQL nutze EXPLAIN FORMAT=JSON.

  2. In „Aus Code generieren“ einfügen

    Öffne „Aus Code generieren“ (eine Pro-Funktion) im Menü „Weitere Werkzeuge“ und füge ein. Der Plan wird automatisch erkannt und eine Live-Vorschau erscheint.

  3. Heatmap lesen

    Grüne Knoten tragen wenig bei, rote am meisten. Ordne den Baum von oben nach unten oder von links nach rechts an, je nachdem, was sich besser liest.

  4. Kommentieren und teilen

    Füge den Baum ein, setz eine Notiz mit deinem Fix an den roten Kasten, dann teil einen Link oder exportiere als PNG, SVG oder PDF.

Wo die Zeit wirklich hingeht

Heatmap nach Eigenzeit, nicht nach Summen

Postgres meldet Kosten und Zeit kumulativ, deshalb wirkt die Wurzel eines Plans immer am teuersten. Wer hier den EXPLAIN-Plan visualisiert, sieht die Werte ohne die Kindknoten: Gefärbt wird nach dem, was ein Knoten selbst beiträgt, von Grün über Bernstein bis Rot. Jeder Kasten zeigt den Knotentyp und die Tabelle, den Index oder die Funktion, auf der er arbeitet, dazu Kosten, Zeilen und mit ANALYZE die Zeit in Millisekunden über alle Schleifen.

  • Postgres EXPLAIN im JSON-Format, mit oder ohne ANALYZE
  • MySQL EXPLAIN FORMAT=JSON, mit jeder Tabelle samt Zugriffstyp, Kosten und Zeilen
  • Läuft in deinem Browser, Plan und Tabellennamen bleiben also auf deinem Rechner
Jetzt ausprobieren
EXPLAIN (ANALYZE, FORMAT JSON) SELECT * FROM orders o JOIN users u ON ...; [{ "Plan": { "Node Type": "Nested Loop", "Actual Total Time": 49.8, "Plans": [ ... ] }}] -- MySQL: EXPLAIN FORMAT=JSON Nested Loop 49.8 ms Seq Scan orders Index Scan users 38.2 ms hier
Wofür man es nutzt

Langsame Ausführungspläne leicht besprechbar machen

Einen rohen Plan entziffert eine Person allein; einen farbigen Baum versteht das ganze Team.

Langsame Abfragen eingrenzen

Finde den sequenziellen Scan oder den teuren Join in Sekunden, statt durch verschachteltes JSON zu scrollen.

Vor und nach einem Index

Füg beide Pläne auf einer Leinwand ein und zeig genau, welcher Knoten von Rot zu Grün gewechselt ist.

Code-Reviews

Häng den Plan einer neuen Abfrage an den Pull Request, damit Reviewer ihre Kosten sehen und nicht nur ihr SQL.

Incident-Berichte

Exportiere den Baum mit Heatmap als PNG, SVG oder PDF und zeig den Übeltäter direkt im Post-Mortem.

Übergaben zwischen Entwicklung und DBA

Teilt ein Board, auf dem beide Seiten in Echtzeit dieselben Planknoten kommentieren.

Query-Planner verstehen

Sieh, wie Joins, Scans und Sorts ineinander verschachtelt sind und warum der Planner sie gewählt hat.

Fragen

FAQ: EXPLAIN-Plan visualisieren

Welche EXPLAIN-Ausgabe kann ich einfügen?
Postgres EXPLAIN (FORMAT JSON), mit oder ohne ANALYZE, und MySQL EXPLAIN FORMAT=JSON. Die reine Textausgabe von EXPLAIN wird nicht unterstützt, fordere also JSON an.
Sollte ich EXPLAIN ANALYZE verwenden?
Ja, wenn du es dir leisten kannst, die Abfrage auszuführen. Mit ANALYZE folgt die Heatmap der gemessenen Zeit; ohne ANALYZE folgen die Farben den geschätzten Kosten des Planners.
Verlässt mein Ausführungsplan den Browser?
Nein. Der Plan wird vollständig in deinem Browser ausgewertet und angeordnet. Gespeichert wird nur das Diagramm, das du einfügst, wie jede andere Zeichnung.
Ist das kostenlos?
„Aus Code generieren“, das einen EXPLAIN-Plan in ein Diagramm verwandelt, ist Teil von Pro und Enterprise. Der Free-Plan bietet dir trotzdem die volle Leinwand, jeden Diagrammtyp und den Export als PNG, SVG und PDF, ohne Kreditkarte.

Lass den Engpass sich selbst vorstellen.

Öffne LetDraw, füg deinen EXPLAIN-Plan als JSON ein und sieh, wo die Abfrage ihre Zeit verbringt.