Campaign Classic V7 - ¿Qué es el módulo db pg_stat_states? ¿Para qué sirve?

Última actualización: 2022-09-29

Descripción

  1. ¿Qué es el módulo de base de datos? pg_stat_statements?

  2. ¿Por qué los clientes lo solicitan para activarlo?

  3. ¿Cómo se activa?

Resolución

  1. La variable pg_stat_statements proporciona un medio para rastrear las estadísticas de ejecución de todas las instrucciones SQL ejecutadas por un servidor.

    El módulo debe cargarse añadiendo pg_stat_statements a shared_preload_libraries en postgresql.conf, porque requiere memoria compartida adicional. Esto significa que es necesario reiniciar el servidor para agregar o quitar el módulo.

    Vínculo: https://www.postgresql.org/docs/9.4/pgstatstatements.html

  2. Implementar un esquema de tipo view en esta tabla que nos permite monitorizar consultas que tardan mucho tiempo. De este modo, los clientes podrán ajustar estos ajustes y optimizar el rendimiento.

    Esta extensión proporciona métricas sobre la ejecución de consultas: que son las consultas que se ejecutan con más frecuencia y cuánto tarda cada una de ellas.

  3. pg_stat_statements

    1. Verificar que PostgreSQL oficial contrib para la versión postgres está instalado.

      $ dpkg -l | grep postgres
       postgresql-contrib-9.3
      

      Si no está instalado, instálelo.

      $ apt-get install postgresql-contrib-9.3
      
    2. Cambiar postgresql.conf para cargar previamente el módulo al inicio

      Predeterminado: shared_preload_libraries = ''

      Nuevo: shared_preload_libraries = 'pg_stat_statements'

      Si usa ambas pg_stat_statements y auto_explain, utilice un registro ONE y separe con comas:

      shared_preload_libraries = 'auto_explain,pg_stat_statements'
      
    3. En la base de datos que desee monitorizar, ejecute CREATE consulta:

      No se requiere ninguna creación de extensión para auto_explain, solo para pg_stat_statements

      psql
      postgres=# \c mydatabase
      mydatabase=# CREATE EXTENSION pg_stat_statements;
      
    4. En la sección OPTIONS PERSONALIZADOS de postgresql.conf, agregue las líneas:

      pg_stat_statements.max = 5000
      pg_stat_statements.track = all
      pg_stat_statements.save = on
      
    5. Reiniciar el servicio postgresql

Ejemplo: Obtener las 5 consultas más costosas de las bases de datos

SELECT query, calls, total_time, rows, 100.0\*shared_blks_hit/nullif(shared_blks_hit+shared_blks_read,0) AS hit_percent
 from pg_stat_statements as s inner join pg_database as d on d.oid = s.dbid
 where d.datname = 'Database_Name'
 order by total_time desc limit 5;

En esta página