Captura de planes de ejecución de Aurora PostgreSQL en réplicas - Amazon Aurora

Captura de planes de ejecución de Aurora PostgreSQL en réplicas

QPM (Administración de planes de consultas) le permite capturar los planes de consultas generados por las réplicas de Aurora y los almacena en la instancia de base de datos principal del clúster de base de datos de Aurora. Puede recopilar los planes de consultas de todas las réplicas de Aurora y mantener un conjunto de planes óptimos en una tabla persistente central en la instancia principal. A continuación, puede aplicar estos planes a otras réplicas cuando lo necesite. De este modo, se mantiene la estabilidad de los planes de ejecución y se mejora el rendimiento de las consultas en todos los clústeres de bases de datos y versiones del motor.

Requisitos previos

Activar capture_plan_baselines parameter en una réplica de Aurora: establezca el parámetro capture_plan_baselines en automático o manual para capturar los planes en las réplicas de Aurora. Para obtener más información, consulte apg_plan_mgmt.capture_plan_baselines.

Instalar la extensión postgres_fdw: debe instalar la extensión de contenedor de datos externos postgres_fdw para capturar los planes en las réplicas de Aurora. Para instalar la extensión, ejecute el siguiente comando en cada base de datos:

postgres=> CREATE EXTENSION IF NOT EXISTS postgres_fdw;

Administrar la captura de planes para réplicas de Aurora

Activar la captura de planes para réplicas de Aurora

Debe tener privilegios de rds_superuser para crear o eliminar la captura de planes en las réplicas de Aurora. Para obtener más información sobre los roles de usuario y los permisos, consulte Descripción de los roles y permisos de PostgreSQL.

Para capturar planes, llame a la función apg_plan_mgmt.create_replica_plan_capture en la instancia de base de datos del escritor, como se muestra a continuación:

postgres=> CALL apg_plan_mgmt.create_replica_plan_capture('cluster_endpoint', 'password');
  • cluster_endpoint: cluster_endpoint (punto de conexión del escritor) proporciona soporte de conmutación por error para la captura de planes en réplicas de Aurora.

  • contraseña: le recomendamos que siga las siguientes indicaciones para crear una contraseña y mejorar la seguridad:

    • Debe contener al menos 8 caracteres únicos.

    • Debe contener al menos una letra en mayúsculas, una letra en minúsculas y un número.

    • Debe tener al menos un carácter especial (?, !, #, <, >, *, etc.).

nota

Si cambia el punto de conexión del clúster, la contraseña o el número de puerto, debe volver a ejecutar apg_plan_mgmt.create_replica_plan_capture() con el punto de conexión y la contraseña del clúster para iniciar la captura de planes de nuevo. De lo contrario, no se podrán capturar los planes de las réplicas de Aurora.

Desactivar la captura de planes para réplicas de Aurora

Puede desactivar el parámetro capture_plan_baselines en la réplica de Aurora estableciendo su valor en off en el grupo de parámetros.

Eliminar la captura de planes para réplicas de Aurora

Puede eliminar completamente la captura de planes en las réplicas de Aurora, pero asegúrese antes de hacerlo. Para eliminar la captura de planes, llame a apg_plan_mgmt.remove_replica_plan_capture como se muestra a continuación:

postgres=> CALL apg_plan_mgmt.remove_replica_plan_capture();

Debe volver a llamar a apg_plan_mgmt.create_replica_plan_capture() para activar la captura de planes en las réplicas de Aurora con el punto de conexión y la contraseña del clúster.

Solución de problemas

A continuación, puede encontrar ideas para resolver problemas y soluciones si el plan no se captura en las réplicas de Aurora como se esperaba.

  • Configuración de parámetros: compruebe si el parámetro capture_plan_baselines está establecido en el valor adecuado para activar la captura de planes.

  • Instalación de la extensión postgres_fdw: utilice la siguiente consulta para comprobar si se ha instalado postgres_fdw.

    postgres=> SELECT * FROM pg_extension WHERE extname = 'postgres_fdw'
  • Llamada a create_replica_plan_capture(): utilice el siguiente comando para comprobar si se ha activado el mapeo de usuarios. De lo contrario, llame a create_replica_plan_capture() para iniciar la función.

    postgres=> SELECT * FROM pg_foreign_server WHERE srvname = 'apg_plan_mgmt_writer_foreign_server';
  • Número de puerto y punto de conexión del clúster: compruebe si el punto de conexión y el número de puerto del clúster son correctos. Si no lo son, no se mostrará ningún mensaje de error.

    Usa el siguiente comando para comprobar el punto de conexión utilizado en create() y ver en qué base de datos está alojado:

    postgres=> SELECT srvoptions FROM pg_foreign_server WHERE srvname = 'apg_plan_mgmt_writer_foreign_server';
  • reload (): debe llamar a apg_plan_mgmt.reload() después de llamar a apg_plan_mgmt.delete_plan() en las réplicas de Aurora para que la función de eliminación sea efectiva. Esto garantiza que el cambio se haya implementado correctamente.

  • Contraseña: debe introducir la contraseña en create_replica_plan_capture() según las pautas mencionadas. De lo contrario, se producirá un error. Para obtener más información, consulte Administrar la captura de planes para réplicas de Aurora. Utilice otra contraseña que se ajuste a los requisitos.

  • Conexión entre regiones: la captura de planes en réplicas de Aurora también se admite en la base de datos global de Aurora, donde la instancia de escritor y las réplicas de Aurora pueden estar en diferentes regiones. La instancia de escritor y la réplica entre regiones deben poder comunicarse mediante emparejamiento de VPC. Para obtener más información, consulte Interconexión de VPC. Si se produce una conmutación por error entre regiones, debe volver a configurar el punto de conexión para convertirlo en un nuevo punto de conexión del clúster de base de datos principal.