El plan de consultas EXPLAIN - AWS Guía prescriptiva

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

El plan de consultas EXPLAIN

PostgreSQL proporciona EXPLAIN las EXPLAIN ANALYZE opciones para devolver planes de consultas con detalles sobre cómo se ejecutará la consulta.

La declaración EXPLAIN

La EXPLAIN sentencia devuelve el plan de consultas que el planificador de PostgreSQL genera para una sentencia determinada. El plan de consultas muestra lo siguiente:

  • Cómo se escanearán las tablas incluidas en una declaración (por ejemplo, mediante un escaneo de índice o un escaneo secuencial)

  • Cómo se unirán varias tablas (por ejemplo, unión por hash, combinación por fusión o unión por bucles anidados)

Comprender el plan es fundamental para mejorar el rendimiento de la consulta. Una vez que comprenda el plan, podrá centrarse en los aspectos en los que la consulta está tardando demasiado y tomar medidas para reducir el tiempo.

Usando EXPLAIN ANALYZE

En PostgreSQLEXPLAIN, solo generará un plan para la declaración dada. Si agrega la ANALYZE palabra clave, EXPLAIN devolverá el plan, ejecutará la consulta y mostrará el tiempo de ejecución real y el recuento de filas de cada paso. Esto es indispensable para analizar el rendimiento de la consulta.

importante

Cuando EXPLAIN ANALYZE lo use, tenga cuidado con INSERTUPDATE, yDELETE.

¿Cómo leer el plan de consultas de EXPLAIN

Un plan de consultas de PostgreSQL es una estructura de árbol que consta de varios nodos. El plan de EXPLAIN consultas muestra los pasos que utiliza el motor de base de datos para ejecutar una consulta. El plan de consultas proporciona la siguiente información:

  • El tipo de operaciones que se realizan, como escaneos secuenciales, escaneos de índices o uniones de bucles anidados.

  • Una etiqueta, como, o Seq Scan Index ScanNested Loop, para describir la operación que se está realizando.

  • El nombre de la tabla o el índice que está procesando la consulta.

  • Columnas de costos y filas con información sobre el costo estimado en una unidad de cálculo arbitraria y el número de filas procesadas.

  • El estado del filtro de cualquier filtro aplicado a la operación, como la where condición.

  • Una representación visual de los pasos, en la que cada operación se muestra como un nodo y flechas que conectan las operaciones. El orden de las operaciones se muestra de izquierda a derecha, y las operaciones anteriores se incorporan a las operaciones posteriores.

La siguiente captura de pantalla muestra el plan de consulta para un escaneo secuencial.

El plan de consulta se muestra en la pestaña Salida de datos de pgAdmin.

La estimación del costo (cost=0.00..32.60 rows=2260 width=8) significa que PostgreSQL espera que la consulta requiera 32,60 unidades de cálculo para obtener resultados.

El 0.00 valor es el coste al que este nodo puede empezar a funcionar (en este caso, el tiempo de inicio de la consulta). El rows valor es el número estimado de filas que devolverá el escaneo secuencial. El width valor es el tamaño estimado en bytes de las filas devueltas.

Como en el ejemplo se muestra EXPLAIN con la ANALYZE opción, se ejecutó la consulta y se capturó la información sobre el tiempo. El resultado (actual time=0.120..0.121 rows=1 loops=1) significa lo siguiente:

  • El escaneo secuencial se ejecutó una vez (el loops valor).

  • El escaneo devolvió una fila.

  • El tiempo real fue de 0,12 milisegundos.