Uso de parámetros de registro para capturar variables de enlace - AWS Guía prescriptiva

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de parámetros de registro para capturar variables de enlace

Un caso de uso típico para capturar variables de enlace en PostgreSQL es depurar y ajustar el rendimiento de las consultas SQL. Una variable de enlace le permite pasar datos a una consulta cuando la ejecuta. Al capturar las variables de enlace, puede ver los datos de entrada que se pasaron a una consulta, lo que puede ayudarle a identificar cualquier problema con los datos o con el rendimiento de la consulta. La captura de las variables de enlace también puede ayudarle a auditar los datos de entrada y a detectar posibles riesgos de seguridad o actividades maliciosas.

Hay varias formas de capturar variables de enlace para PostgreSQL. Un método consiste en habilitar los parámetros debug_print_parse ydebug_print_rewritten. Esto hace que PostgreSQL envíe las versiones analizadas y reescritas de las sentencias SQL, junto con las variables enlazadas, al registro del servidor.

  • debug_print_parse: Al habilitar este parámetro, el árbol de análisis de las consultas entrantes se imprime en el registro del servidor. Esto puede resultar útil para comprender la estructura de una consulta y los valores de cualquier parámetro enlazado.

  • debug_print_rewritten: Al habilitar este parámetro, las formas reescritas de las consultas entrantes se imprimen en el registro del servidor. Esto puede resultar útil para entender cómo el planificador de consultas interpreta una consulta y los valores de cualquier parámetro enlazado.

Puede usar dos parámetros adicionales en Amazon RDS y Aurora para capturar variables de enlace en sus bases de datos de PostgreSQL:

  • log_min_duration_statement: Este parámetro establece la duración mínima de una sentencia antes de que se registre, en milisegundos. Cuando una sentencia tarda más de lo especificado, sus valores de enlace se incluyen en la salida del registro.

  • log_statement: Este parámetro controla qué sentencias SQL se registran. Establezca este parámetro en all o enlace para incluir los valores enlazados en el registro. El aumento del nivel de registro afecta al rendimiento, por lo que se recomienda revertir los cambios después de solucionar el problema.

También puede usar la pg_stat_statements extensión, que proporciona estadísticas de rendimiento para todas las sentencias SQL ejecutadas por un servidor, incluidos el texto de la consulta y los valores enlazados. Esta extensión le permite utilizar pgAdmin o herramientas similares para supervisar y analizar el rendimiento de las consultas.

Otra opción es utilizar la pg_bind_parameter_status() función para obtener los valores de los parámetros enlazados a partir de una sentencia preparada o utilizar la pg_get_parameter_status (paramname) función para recuperar el estado o el valor de un parámetro de tiempo de ejecución específico.

Además, puede utilizar herramientas de terceros, como PgBadger, para analizar los registros de PostgreSQL y extraer las variables de enlace y otra información para su posterior análisis.