Captura de planes de ejecución de Aurora PostgreSQL - Amazon Aurora

Captura de planes de ejecución de Aurora PostgreSQL

La administración de planes de consultas de Aurora PostgreSQL ofrece dos modos diferentes para capturar los planes de ejecución de consultas, automático o manual. Para elegir el modo, defina el valor de apg_plan_mgmt.capture_plans_baselines en automatic o en manual. Puede capturar planes de ejecución para instrucciones SQL específicas mediante una captura del plan manual. También puede capturar todos los planes (o los más lentos) que se pongan en marcha dos o más veces mientras se ejecuta su aplicación utilizando la captura de planes automática.

Al capturar planes, el optimizador establece el estado del primer plan capturado de una instrucción administrada en approved. El optimizador establece el estado de cualquier plan adicional capturado para una instrucción administrada en unapproved. Sin embargo, puede guardarse ocasionalmente más de un plan con el estado approved. Esto puede ocurrir cuando se crean varios planes para una instrucción en paralelo, y antes de que se confirme el primer plan para la instrucción.

Para controlar el número máximo de planes que se pueden capturar y almacenar en la vista dba_plans, establezca el parámetro apg_plan_mgmt.max_plans en su grupo de parámetros en el nivel de la instancia de la base de datos. Un cambio en el parámetro apg_plan_mgmt.max_plans requiere un reinicio de la instancia de base de datos para que el nuevo valor tenga efecto. Para obtener más información, consulte el parámetro apg_plan_mgmt.max_plans.

Captura manual de planes para instrucciones SQL específicas

Si tiene un conjunto conocido de instrucciones SQL para administrar, ponga las instrucciones en un archivo de script SQL y capture manualmente los planes. A continuación se muestra un ejemplo psql de cómo capturar planes de consulta manualmente para un conjunto de instrucciones SQL.

psql> SET apg_plan_mgmt.capture_plan_baselines = manual; psql> \i my-statements.sql psql> SET apg_plan_mgmt.capture_plan_baselines = off;

Tras capturar un plan para cada instrucción SQL, el optimizador añade una nueva fila a la vista apg_plan_mgmt.dba_plans.

Recomendamos que utilice instrucciones EXPLAIN o EXPLAIN EXECUTE en el archivo de script de SQL. Asegúrese de que incluye suficientes variaciones en los valores de parámetros para capturar todos los planes de interés.

Si conoce un plan mejor que el plan de costo mínimo del optimizador, puede que sea capaz de forzar al optimizador a que use el plan mejor. Para ello, especifique una o más sugerencias del optimizador. Para obtener más información, consulte Corrección de planes mediante pg_hint_plan. Para comparar el rendimiento de los planes unapproved y approved y aprobarlos, rechazarlos o eliminarlos, consulte Evaluación del rendimiento de los planes.

Captura de planes automática

Utilice la captura de planes automática para situaciones como la siguiente:

  • No sabe las instrucciones SQL específicas que quiere administrar.

  • Tiene cientos o miles de instrucciones SQL que administrar.

  • Su aplicación usa una API de cliente. Por ejemplo, JDBC utiliza instrucciones preparadas sin nombre o instrucciones en modo masivo que no se pueden expresar en psql.

Para capturar planes automáticamente
  1. Active la captura de planes automática configurando apg_plan_mgmt.capture_plan_baselines como automatic en el grupo de parámetros para la instancia de la base de datos. Para obtener más información, consulte Modificación de parámetros de un grupo de parámetros de base de datos .

  2. Reinicie la instancia de base de datos.

  3. A medida que se ejecuta la aplicación, el optimizador captura los planes para cada instrucción SQL que se ejecute al menos dos veces.

    A medida que se ejecuta la aplicación con los ajustes de parámetro del administrador de planes de consulta predeterminados, el optimizador captura los planes para cada instrucción SQL que se ejecute al menos dos veces. La captura de todos los planes con los valores predeterminados tiene una sobrecarga de tiempo de ejecución muy pequeña y puede habilitarse en producción.

Para desactivar la captura de planes automática, realice el siguiente parámetro:
  • En el parámetro apg_plan_mgmt.capture_plan_baselines, establezca el valor off desde el grupo de parámetros de base de datos.

Para medir el rendimiento de los planes sin aprobar y aprobar, rechazar o eliminar dichos planes, consulte Evaluación del rendimiento de los planes.