Obtenga estadísticas de consultas de ejecución lenta


10

Mi aplicación de base de datos ejecuta muchas consultas diferentes. Lo configuré log_min_duration_statementen 1000. Pero las consultas registradas allí no siempre son lentas, la mayoría de las veces solo toman unos pocos ms.

¿Es posible obtener una estadística de todas las consultas y con qué frecuencia demoraron más de 1000 ms?


1
Vea si eso ayuda: se ignora la configuración log_min_duration_statement . O olvidó volver a cargar la configuración después de cambiar la configuración.
Daniel Vérité

Respuestas:


11

Instale la extensión pg_stat_statements con el comando SQL

CREATE EXTENSION pg_stat_statements

Es posible que desee asegurarse de crear esto utilizando un usuario apropiado (como el usuario que utiliza su aplicación o alguna cuenta dba). Tenga en cuenta que cualquier usuario que cree la extensión también será el propietario.

Esto requerirá un reinicio del servidor para que sea utilizable (porque debe cambiar la configuración en postgresql.conf un poco que afecta el consumo de memoria), pero le dará estadísticas sobre todas las consultas.

Consulte la página de documentación para obtener más información sobre lo que proporciona pg_stat_statements. Consulte aquí para obtener una referencia rápida sobre la configuración del archivo de configuración postgresql.conf para pg_stat_statements.

Una vez que lo tenga instalado y en ejecución, puede ver las estadísticas consultando la vista pg_stat_statements.

select * from pg_stat_statements;
-- or
select * from pg_stat_statements where total_time / calls > 200; -- etc ..

2

Cómo @JoishiBodio dijo que puede usar la pg_stat_statementsextensión para ver estadísticas de consultas lentas. Para aquellos que luchan con la instalación (como lo hice):

  1. Verifique si pg_stat_statementsestá en la lista de extensiones disponibles:

    SELECT * FROM pg_available_extensions;
  2. Intente instalar el postgresql-contribpaquete a través de su administrador de paquetes del sistema, en Debian / Ubuntu:

    sudo apt-get install postgresql-contrib-9.5

Luego haz el paso 1 nuevamente.

  1. Agregar pg_stat_statementsa la shared_preload_librariesconfiguración de PostgreSQL:

vía postgres.conf:

    shared_preload_libraries = 'pg_stat_statements'

a través de argumentos de línea de comando (¡sin comillas!):

    postgres -c shared_preload_libraries=pg_stat_statements
  1. Luego cree la extensión en una base de datos:

    CREATE EXTENSION pg_stat_statements;
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.