Postgres y MySQL

Un visualizador de EXPLAIN que encuentra la parte lenta.

Pega un plan de ejecución EXPLAIN de Postgres o MySQL en JSON y el visualizador de EXPLAIN de LetDraw lo dibuja como un árbol, con una caja por nodo del plan con su coste, sus filas y su tiempo. Un mapa de calor colorea cada nodo según el tiempo o el coste que añade por sí mismo, así que el paso lento de la consulta se ilumina en rojo.

Consulta lenta · EXPLAIN
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 - tiempo + tiempo
Paso a paso

Del plan de ejecución a una imagen en cuatro pasos

Ejecuta EXPLAIN en JSON, pégalo y lee el árbol en lugar del muro de texto.

  1. Obtén el plan en JSON

    En Postgres ejecuta EXPLAIN (FORMAT JSON) antes de tu consulta, o EXPLAIN (ANALYZE, FORMAT JSON) para obtener tiempos reales. En MySQL usa EXPLAIN FORMAT=JSON.

  2. Pégalo en Generar desde código

    Abre Generar desde código (una función Pro) desde el menú Más herramientas y pega. El plan se reconoce automáticamente y aparece una vista previa en vivo.

  3. Lee el mapa de calor

    Los nodos verdes añaden poco y los rojos añaden más. Organiza el árbol de arriba abajo o de izquierda a derecha, como se lea mejor.

  4. Anota y comparte

    Inserta el árbol, añade una nota con tu solución sobre la caja roja y luego comparte un enlace o exporta a PNG, SVG o PDF.

Adónde se va realmente el tiempo

Mapa de calor por tiempo propio, no por totales

Postgres informa del coste y del tiempo de forma acumulada, así que la raíz de un plan siempre parece la más cara. Este visualizador de EXPLAIN resta los hijos de cada nodo y colorea según lo que añade el propio nodo, de verde a ámbar y a rojo. Cada caja muestra el tipo de nodo y la tabla, el índice o la función sobre la que trabaja, además del coste, las filas y, con ANALYZE, el tiempo en milisegundos sumando todos los bucles.

  • EXPLAIN de Postgres en formato JSON, con o sin ANALYZE
  • EXPLAIN FORMAT=JSON de MySQL, con cada tabla y su tipo de acceso, su coste y sus filas
  • Funciona en tu navegador, así que el plan y los nombres de tus tablas se quedan en tu equipo
Pruébalo ahora
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 aquí
Para qué se usa

Haz que los planes de consultas lentas sean fáciles de comentar

Un plan en bruto es algo que una persona descifra a solas; un árbol en colores es algo que entiende todo el equipo.

Diagnóstico de consultas lentas

Encuentra el escaneo secuencial o el join costoso en segundos en lugar de recorrer JSON anidado.

Antes y después de un índice

Pega ambos planes en un lienzo y muestra exactamente qué nodo pasó de rojo a verde.

Revisiones de código

Adjunta el plan de una consulta nueva a la pull request para que los revisores vean su coste, no solo su SQL.

Informes de incidentes

Exporta el árbol con mapa de calor a PNG, SVG o PDF y pon al culpable directamente en el post-mortem.

Coordinación entre desarrolladores y DBA

Comparte un solo tablero en el que ambas partes comentan los mismos nodos del plan en tiempo real.

Aprender cómo planifica el motor

Mira cómo se anidan los joins, los escaneos y las ordenaciones, y por qué el planificador los eligió.

Preguntas

Preguntas frecuentes sobre el visualizador de EXPLAIN

¿Qué salida de EXPLAIN puedo pegar?
EXPLAIN (FORMAT JSON) de Postgres, con o sin ANALYZE, y EXPLAIN FORMAT=JSON de MySQL. La salida en texto plano de EXPLAIN no es compatible, así que pide JSON.
¿Debo usar EXPLAIN ANALYZE?
Si puedes permitirte ejecutar la consulta, sí. Con ANALYZE el mapa de calor sigue el tiempo medido; sin él, los colores siguen el coste estimado por el planificador.
¿Mi plan de ejecución sale del navegador?
No. El plan se analiza y se organiza por completo en tu navegador. Solo se guarda el diagrama que insertas, como cualquier otro dibujo.
¿Es gratis?
Generar desde código, que convierte un plan EXPLAIN en un diagrama, forma parte de Pro y Enterprise. El plan Free te sigue dando el lienzo completo, todos los tipos de diagrama y la exportación a PNG, SVG y PDF, sin tarjeta de crédito.

Deja que el cuello de botella se presente solo.

Abre LetDraw, pega tu plan EXPLAIN en JSON y mira en qué gasta el tiempo la consulta.