Haciendo Debugger a una función plpgsql

En la entrada anterior les comenté como hacer “Profiler” a una función plpgsql, lo cual puede ser muy beneficioso para conocer picos de trabajo de cada línea de una función plpgsql. En esta les traigo como hacer “Debugger” a dichas funciones, todos seguro hayamos hecho esta actividad en algún lenguaje, y conocemos que no es más que recorrer el código y ver que caminos toma el mismo y que valores tomas las diferentes variables. El “debugger” combinado con el “Profiler” puede ser útil para poner a punto una función plpgsql.

PostgreSQL tiene la forma de hacer debuger también y utilizando una extensión llamada pldebugger y tiene una buena integración con el PgAdmin3, la misma hay que instalarla en el servidor PostgreSQL y reiniciarlo para que tome los cambios que necesitamos, luego en el PgAdmin3 podemos utilizarla. Sigue leyendo

Anuncios

Haciendo Profiler a una función plpgsql

En varias ocasiones nos ha tocado hacer “Profiler”  a algún código que hemos realizado o han realizado otros, pero que es el “Profiler o Profiling”, no es más que es análisis  del comportamiento de un programa  o código,  con el objetivo de averiguar el tiempo dedicado a la ejecución de diferentes partes  para detectar los puntos críticos.

Lo que les traigo acá es una de las maneras de como hacer Profiler en PostgreSQL, no es la única, pero me ha llamado mucho la atención por su sencillez y la utilidad que puede brindar, específicamente en las funciones PLPGSQL, utilizando una extensión llamada plprofiler. Es promocionada y al parecer mantenida por la empresa openscg y publicada en su repositorio, la última actualización de la extensión es de 2015-02-15, y nos brinda una vista que muestra el oid, linea, veces de ejecución, el tiempo total de ejecución y el tiempo  que más se demoró esa línea, si así mismo como menciono, toda esa información. En este momento es posible que dirán  “WOW todo eso puede ser genial, como no lo había visto antes”, :D, pues conocer que sucede en el interior de una función plpgsql puede ser complejo, a no ser por los Raise Notice y algún que otro truco, pero puede resultar torpe pues necesitamos colocar ese código dentro la función para hacer “Profiler” y puede ensuciar el mismo.

PLPROFILER al rescate Sigue leyendo