sOrIa’S bLoG

¿ Como saber los SQL’s que se ejecutan en Postgresql ?

Posteado por: dsoria en: Octubre 8, 2008

Una tarea interesante de los administradores (una de tantas, claro) es monitorear el rendimiento de los equipos, específicamente de los servidores. Hay veces que los servidores se tornan lentos por x o y circunstancia, he aqui, una de ellas.

Resulta que queremos ver, las consultas que se hacen en nuestro server, para ver 2 cosas:

1. Que querys se ejecutan en determinado momento y
2. Ver si dichas consultas, siguen en proceso, verificar si terminan en el caso de uso de transacciones.

En postgresql existe un archivo de configuración llamado: postgresql.conf y está en el directorio donde instalamos la base de datos en el servidor, puede ser /opt o bien /usr/local, si no lo sabemos, podemos utizar este comando para localizarlo:

$ find / -name 'postgresql.conf' ;)

Una ves que encontremos el archivo, lo editamos, se verá que hay muchas lineas para configurar.


#--------------------------------------------------------
# RUNTIME STATISTICS
#--------------------------------------------------------

# - Statistics Monitoring -

#log_parser_stats = off
#log_planner_stats = off
#log_executor_stats = off
#log_statement_stats = off

# - Query/Index Statistics Collector -

#stats_start_collector = on
stats_command_string = on
#stats_block_level = off
stats_row_level = on
#stats_reset_on_server_start = off

Por defecto, la variable stats_command_string es off, o en su caso false, dependiendo de la versión de postgresql. Lo que tenemos que hacer, es editar dicha variable y asignarle un valor on o bien true. Listo, guardamos el archivo.

Reiniciamos postgres:

$ pg_ctl reload

Y ejecutamos en alguna de nuestras bases de datos, la siguiente sentencia:

SELECT * FROM pg_stat_activity ORDER BY 1;

datid | datname | procpid | usesysid | usename | current_query | query_start | backend_start | client_addr | client_port
----------+---------------+---------+----------+----------+-------------------------------+------------------+------------------+----------------+-------------
58964727 | database1 | 3189 | 6191381 | rene | | 2007-11-29 23:10 | 2007-11-29 23:09 | 192.168.10.109 | 4767
58964727 | database1 | 32157 | 16384 | usuario1 | | 2007-11-29 16:49 | 2007-11-29 15:16 | 192.168.10.16 | 2892
58964727 | database1 | 3190 | 6191381 | rene | select to from tabla group to | 2007-11-29 23:11 | 2007-11-29 23:09 | 192.168.10.109 | 4775

Dicha consulta nos arroja aquellos SQL’s que están corriendo en el server. Esta información nos sirve para ver el funcionamiento optimo de la base. Podemos ver tambien, si hay transacciones que quedaron en proceso, para asi eliminarlas y no cargar de recursos a nuestro servidor.

Etiquetas:

Escribe un comentario