Prácticas recomendadas para la administración de planes de consultas de Aurora PostgreSQL - Amazon Aurora

Prácticas recomendadas para la administración de planes de consultas de Aurora PostgreSQL

La administración de planes de consultas le permite controlar cuándo y cómo cambian los planes de ejecución de consultas. Como DBA, sus principales objetivos al utilizar QPM incluyen la prevención de regresiones cuando se producen cambios en la base de datos y controlar si permitir que el optimizador utilice un nuevo plan. A continuación, encontrará algunas prácticas recomendadas para utilizar la administración de planes de consultas. Los enfoques de administración de planes proactivos y reactivos difieren en el cómo y el cuándo se aprueban los nuevos planes para su uso.

Administración de planes proactiva para evitar la regresión del rendimiento

Para evitar que se produzcan regresiones en el rendimiento del plan, desarrolle las bases de referencia del plan mediante la ejecución de un procedimiento que compare el rendimiento de los planes recién descubiertos con el rendimiento de las bases de referencia existentes de los planes aprobados y, a continuación, apruebe automáticamente el conjunto de planes más rápido como la nueva base de referencia. De esta manera, la base de referencia de los planes mejora con el tiempo a medida que se detectan planes más rápidamente.

  1. En un entorno de desarrollo, identifique las instrucciones SQL que causen un mayor impacto en el rendimiento del sistema. Después, capture los planes para estas instrucciones según se describen en Captura manual de planes para instrucciones SQL específicas y Captura de planes automática.

  2. Exporte los planes capturados desde el entorno de desarrollo e impórtelos al entorno de producción. Para obtener más información, consulte Importación y exportación de planes.

  3. En producción, ejecute su aplicación y fuerce el uso de planes administrados aprobados. Para obtener más información, consulte Uso de los planes administrados de Aurora PostgreSQL. Cuando se ejecute la aplicación, añada nuevos planes también a medida que el optimizador los descubra. Para obtener más información, consulte Captura de planes automática.

  4. Analice los planes no aprobados y apruebe los que muestren un buen rendimiento. Para obtener más información, consulte Evaluación del rendimiento de los planes.

  5. Mientras la aplicación continúa ejecutándose, el optimizador empezará a utilizar los nuevos planes, según resulte conveniente.

Garantizar la estabilidad del plan después de una actualización a una versión principal

Cada versión principal de PostgreSQL incluye mejoras y cambios en el optimizador de consultas que están diseñados para mejorar el rendimiento. Sin embargo, los planes de ejecución de consultas generados por el optimizador en versiones anteriores pueden provocar regresiones en el rendimiento en las versiones actualizadas más recientes. Puede utilizar el administrador de planes de consultas para resolver estos problemas de rendimiento y garantizar la estabilidad del plan tras una actualización de la versión principal.

El optimizador siempre utiliza un plan aprobado con el coste mínimo, incluso si hay más de un plan aprobado para la misma instrucción. Tras una actualización, es posible que el optimizador descubra nuevos planes, pero se guardarán como Planes no aprobados. Estos planes solo se ejecutan si se aprueban mediante el estilo reactivo de gestión de planes con el parámetro unapproved_plan_execution_threshold. Para maximizar la estabilidad del plan, puede utilizar el estilo proactivo de gestión de planes con el parámetro evolve_plan_baselines. De este modo, se compara el rendimiento de los nuevos planes con el de los antiguos y se aprueban o rechazan aquellos que sean al menos un 10 % más rápidos que el siguiente mejor plan.

Después de la actualización, puede utilizar la función evolve_plan_baselines para comparar el rendimiento del plan antes y después de la actualización utilizando los enlaces de parámetros de consultas. En los siguientes pasos, se supone que ha estado utilizando planes administrados aprobados en su entorno de producción, como se detalla en Uso de los planes administrados de Aurora PostgreSQL.

  1. Antes de actualizar, ejecute la aplicación con el administrador de planes de consultas en ejecución. Mientras se ejecuta la aplicación, añada nuevos planes a medida que el optimizador los detecta. Para obtener más información, consulte Captura de planes automática.

  2. Evalúe el rendimiento de cada plan. Para obtener más información, consulte Evaluación del rendimiento de los planes.

  3. Después de actualizar, analice de nuevo los planes aprobados utilizando la función evolve_plan_baselines. Compare el rendimiento antes y después de utilizar los enlaces de parámetros de consultas. Si el nuevo plan es rápido, puede añadirlo a los planes aprobados. Si es más rápido que otro plan para los mismos enlaces de parámetros, puede marcar el plan más lento como rechazado.

    Para obtener más información, consulte Aprobar planes mejores. Para obtener información de referencia acerca de esta función, consulte apg_plan_mgmt.evolve_plan_baselines.

Para obtener más información, consulte Ensuring consistent performance after major version upgrades with Amazon Aurora PostgreSQL-Compatible Edition Query Plan Management.

nota

Cuando actualice una versión principal mediante la replicación lógica o AWS DMS, asegúrese de replicar el esquema de apg_plan_mgmt para garantizar que los planes existentes se copien en la instancia actualizada. Para obtener más información sobre la replicación lógica, consulte Uso de la replicación lógica para realizar una actualización de la versión principal para Aurora PostgreSQL.

Administración de planes reactiva para detectar y reparar regresiones del rendimiento

Al monitorizar su aplicación a medida que se ejecuta, puede detectar los planes que causan regresiones del rendimiento. Cuando detecte regresiones, puede rechazar manualmente o reparar los planes defectuosos con estos pasos:

  1. Mientras se ejecute su aplicación, fuerce el uso de planes administrados y añada automáticamente los planes recién descubiertos como no aprobados. Para obtener más información, consulte Uso de los planes administrados de Aurora PostgreSQL y Captura de planes automática.

  2. Monitorización de su aplicación en ejecución para detectar regresiones de rendimiento.

  3. Cuando descubra una regresión del plan, configure el estado del plan en rejected. La próxima vez que el optimizador ejecute la instrucción SQL, ignora automáticamente el plan rechazado y emplea un plan aprobado diferente en su lugar. Para obtener más información, consulte Rechazar o desactivar planes más lentos.

    En algunos casos, puede que prefiera reparar un plan defectuoso en lugar de rechazarlo, deshabilitarlo o eliminarlo. Utilice la extensión pg_hint_plan para experimentar con la mejora de un plan. Con pg_hint_plan, puede utilizar comentarios especiales para decirle al optimizador que anule cómo crea un plan habitualmente. Para obtener más información, consulte Corrección de planes mediante pg_hint_plan.