Cargando



PostgreSQL - Explain

En este tutorial vamos a conocer que es EXPLAIN y cómo podemos utilizar sus recursos, de esta forma podremos entender mejor nuestras consultas y ver en que estamos fallando y como mejorar.


nov 21 2013 17:30
Profesional
nov 25 2013 18:15
Pasa un punto cuando trabajamos con bases de datos que ya no es solo obtener la información lo que nos preocupa, si no el como la obtenemos, ya que dependiendo de la construcción del query será la cantidad de recursos que consuma nuestra consulta, para ello PostgreSQL nos ofrece EXPLAIN una herramienta con la cual vemos como nuestro query hace su ejecución y todo lo que ello representa.


EXPLAIN y EXPLAIN ANALYZE

Estas dos herramientas son la base principal al momento de buscar los problemas de rendimiento de las consultas que realizamos, a pesar de su utilidad no son algo nuevo ya que han estado incluidos en PostgreSQL desde sus primeros años, pero esto no significa que sean obsoletos o anticuados, al contrario, han ido madurando hasta convertirse en una herramienta capaz de arrojar los reportes más detallados sobre la ejecución de los query, inclusive los resultados arrojados por la herramienta los podemos sacar en formatos como XML o JSON para su posterior análisis con otras herramientas.

En pgAdmin tenemos disponible una opción para obtener un gráfico del resultado de EXPLAIN de forma que en vez de estar analizando números podemos ver un gráfico y de esta forma más sencilla detectar los problemas de la consulta y las oportunidades de mejora.

Diferencias entre EXPLAIN y EXPLAIN ANALYZE

Tal vez ambos términos sean utilizados como si fuese la misma cosa, pero entre ellos tenemos diferencias, por ejemplo EXPLAIN nos da una idea de cómo el planificador de query piensa ejecutar la consulta, sin embargo no la ejecuta, en cambio EXPLAIN ANALYZE si la ejecuta y nos da una comparativa entre el rendimiento esperado y el rendimiento real obtenido en la ejecución. Al lanzar EXPLAIN vía pgAdmin podemos elegir entre EXPLAIN y EXPLAIN ANALYZE, lo cual nos dará el resultado de cada uno según los seleccionemos

Veamos un ejemplo de cómo utilizar esta herramienta, para ello vamos a valernos de EXPLAIN ANALYZE, veamos el siguiente código:

EXPLAIN ANALYZE
SELECT left(tract_id,5) As county_code, SUM(hispanic_or_latino) As tot
, SUM(white_alone) As tot_white
, SUM(coalesce(hispanic_or_latino,0) - coalesce(white_alone,0)) AS non_white
FROM census.hisp_pop
GROUP BY county_code
***** BY county_code;

Es una consulta muy sencilla donde hacemos sumas de campos, agrupamos y ordenamos según uno de los campos, lo que obtendremos como resultado del análisis de rendimiento será lo siguiente:

GroupAggregate (cost=111.29..151.93 rows=1478 width=20)
			 (actual time=6.099..10.194 rows=14 loops=1)
-> Sort (cost=111.29..114.98 rows=1478 width=20)
		 (actual time=5.897..6.565 rows=1478 loops=1)
	 Sort Key: ("left"((tract_id)::text, 5))
	 Sort Method: quicksort Memory: 136kB
	 -> Seq Scan on hisp_pop (cost=0.00..33.48 rows=1478 width=20)
								 (actual time=0.390..2.693 rows=1478 loops=1)
Total runtime: 10.370 ms


Si ponemos un poco de esfuerzo en la lectura, los resultados poco a poco nos van siendo más fáciles de leer, sin embargo si no tenemos mucho tiempo o el resultado es muy extenso siempre podemos ver el gráfico.

pg_explain.jpg


Como vemos es más rápido de ver los resultados a nivel gráfico, lo ideal es utilizar ambas herramientas y complementar ambos puntos de vista, es la misma información solo que con diferentes ángulos, habrán puristas que solo desean trabajar con la consola de comandos y está bien, sin embargo un profesional integral de bases de datos debe utilizar todas las herramientas a su disposición en pro de mejorar su trabajo.

Con esto finalizamos el tutorial, con el uso de estas herramientas ya estaremos en posición de detectar las causas que hacen que nuestras consultas no sean rápidas o las oportunidades de mejora para optimizar nuestro query.

¿Te ayudó este Tutorial?


Sin comentarios, sé el primero!

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X