Compartir vía


Monitoreo con pg_stat_statements

Importante

El escalado automático de Lakebase está en Beta en las siguientes regiones: eastus2, westeurope, westus.

El escalado automático de Lakebase es la versión más reciente de Lakebase con proceso de escalado automático, escalado a cero, bifurcación y restauración instantánea. Para ver la comparación de características con Lakebase Provisioned, consulte Elección entre versiones.

pg_stat_statements es una extensión de Postgres que proporciona una vista estadística detallada de la ejecución de instrucciones SQL dentro de la base de datos de Postgres de Lakebase. Realiza un seguimiento de la información, como recuentos de ejecución, tiempos de ejecución totales y promedios, y mucho más, lo que le ayuda a analizar y optimizar el rendimiento de las consultas SQL.

Cuándo usar pg_stat_statements

Use pg_stat_statements cuando necesite:

  • Estadísticas detalladas de ejecución de consultas y métricas de rendimiento
  • Identificación de consultas lentas o ejecutadas con frecuencia
  • Análisis de rendimiento de consultas e información de optimización
  • Análisis de cargas de trabajo de base de datos y planeamiento de capacidad
  • Integración con herramientas y paneles de supervisión personalizados

Habilitar pg_stat_statements

La pg_stat_statements extensión está disponible en Lakebase Postgres. Para habilitarla:

  1. Conéctese a la base de datos mediante el editor de SQL o un cliente de Postgres.

  2. Ejecute el siguiente comando SQL para crear la extensión:

    CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
    
  3. La extensión comienza a recopilar estadísticas inmediatamente después de la creación.

Persistencia de datos

Las estadísticas recopiladas por la pg_stat_statements extensión se almacenan en memoria y no se conservan cuando el proceso de Lakebase se suspende o reinicia. Por ejemplo, si la capacidad de computación disminuye debido a la inactividad, se pierden las estadísticas existentes. Las nuevas estadísticas se recopilan una vez que se reinicia el proceso.

Este comportamiento significa que:

  • Restablecimiento de estadísticas después de reinicios o suspensiones de proceso
  • El análisis de rendimiento de larga duración requiere una disponibilidad de proceso coherente
  • Es posible que desee exportar estadísticas importantes antes del mantenimiento planeado o reinicios.

Nota:

Considere la posibilidad de ejecutar las consultas de supervisión periódicamente y almacenar los resultados externamente si necesita datos históricos de rendimiento en los eventos de ciclo de vida de proceso.

Más información: Extensiones de Postgres

Estadísticas de ejecución de consultas

Después de habilitar la extensión, puede consultar las estadísticas de ejecución mediante la vista . Esta vista contiene una fila por consulta de base de datos distinta, en la que se muestran varias estadísticas:

SELECT * FROM pg_stat_statements LIMIT 10;

La vista contiene detalles como:

ID de usuario dbid queryid query calls
16391 16384 -9047282044438606287 SELECT * FROM usuarios; 10

Para obtener una lista completa de columnas y descripciones, consulte la documentación de PostgreSQL.

Consultas de supervisión clave

Use estas consultas para analizar el rendimiento de la base de datos:

Búsqueda de consultas más lentas

Esta consulta identifica las consultas con el tiempo de ejecución promedio más alto, lo que puede indicar consultas ineficaces que necesitan optimización:

SELECT
    query,
    calls,
    total_exec_time,
    mean_exec_time,
    (total_exec_time / calls) AS avg_time_ms
FROM pg_stat_statements
ORDER BY mean_exec_time DESC
LIMIT 20;

Búsqueda de consultas ejecutadas con más frecuencia

Las consultas ejecutadas con más frecuencia son rutas de acceso críticas y candidatos de optimización. Esta consulta incluye ratios de aciertos de caché para ayudar a identificar las consultas que podrían beneficiarse de una mejor indexación:

SELECT
    query,
    calls,
    total_exec_time,
    rows,
    100.0 * shared_blks_hit / nullif(shared_blks_hit + shared_blks_read, 0) AS hit_percent
FROM pg_stat_statements
ORDER BY calls DESC
LIMIT 20;

Identificar consultas con la E/S más alta

Esta consulta identifica las consultas que realizan la mayoría de las operaciones de E/S de disco, lo que puede afectar al rendimiento general de la base de datos:

SELECT
    query,
    calls,
    shared_blks_read + shared_blks_written AS total_io,
    shared_blks_read,
    shared_blks_written
FROM pg_stat_statements
ORDER BY (shared_blks_read + shared_blks_written) DESC
LIMIT 20;

Búsqueda de consultas que consumen mucho tiempo

Esta consulta identifica las consultas que consumen el tiempo de ejecución más total en todas las ejecuciones:

SELECT
    query,
    calls,
    total_exec_time,
    mean_exec_time,
    rows
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 10;

Búsqueda de consultas que devuelven muchas filas

Esta consulta identifica las consultas que devuelven grandes conjuntos de resultados, lo que podría beneficiarse de la paginación o el filtrado:

SELECT
    query,
    calls,
    rows,
    (rows / calls) AS avg_rows_per_call
FROM pg_stat_statements
ORDER BY rows DESC
LIMIT 10;

Restablecer estadísticas

Para restablecer las estadísticas recopiladas por pg_stat_statements:

Nota:

Solo los databricks_superuser roles tienen el privilegio necesario para ejecutar esta función. El rol predeterminado creado con un proyecto de Lakebase y los roles creados en la aplicación de Lakebase son miembros del rol databricks_superuser.

SELECT pg_stat_statements_reset();

Esta función borra todos los datos estadísticos acumulados, como los tiempos de ejecución y los recuentos de instrucciones SQL, y comienza a recopilar datos nuevos. Resulta especialmente útil cuando quieras empezar desde cero con la recopilación de estadísticas de rendimiento.

Recursos

Más información: Documentación de PostgreSQL