Administra los planes de consultas

En este documento, se describe cómo mejorar el rendimiento de tu plan de consultas con la administración de planes de consultas en AlloyDB para PostgreSQL. La administración de planes de consultas realiza un seguimiento continuo de todos los planes de consultas y sus estadísticas de ejecución en tu base de datos. Después de revisar las consultas y los costos asociados, puedes aprobar un plan, que se aplica de manera coherente para una consulta determinada. Este enfoque garantiza la selección de un plan de consultas rentable, lo que mejora el rendimiento de las consultas.

Cómo funciona

En PostgreSQL, un optimizador de consultas selecciona un plan de ejecución para cada consulta en función de los costos estimados. Muchos factores influyen en el costo de la consulta, por ejemplo, los parámetros de consulta, la complejidad de la consulta, el tamaño de la tabla, los índices disponibles y los recursos del sistema.

Como los parámetros de consulta pueden cambiar con cada ejecución de la consulta, seleccionar un plan de consultas de forma dinámica no siempre produce resultados óptimos. Cuando procesa una consulta, el optimizador evalúa varios planes de ejecución y trata de elegir el plan más rentable.

Un cambio de parámetro puede provocar un cambio de plan. Si bien el plan seleccionado suele ser la opción más rentable, puede haber casos en los que se elija un plan menos rentable, lo que genera un rendimiento deficiente de la consulta. La administración de planes de consultas te ayuda a comprender los patrones y los planes que produce el optimizador, y te permite ver cada plan para tomar decisiones fundamentadas.

Los dos componentes principales de la administración de planes de consultas son los siguientes:

Repositorio de planes de consultas
Cuando habilitas la administración de planes de consultas para tu base de datos, el repositorio de planes comienza a hacer un seguimiento de los planes históricos y las estadísticas de ejecución en tu base de datos. El repositorio de planes de consultas proporciona observabilidad sobre el rendimiento del plan de consultas.
Administración de planes
Después de revisar los planes disponibles, el componente de administración de planes te permite aprobar uno o más planes para una plantilla de consulta específica. La administración de planes de consultas realiza un seguimiento de estos planes aprobados y garantiza que, cuando se ejecute la consulta posteriormente, el optimizador de consultas use solo uno de los planes aprobados. Si se aprueban varios planes, AlloyDB selecciona y ejecuta el plan con el costo estimado más bajo.

Antes de comenzar

  • Establece la marca de base de datos google_plan_management.enabled en on. Para obtener más información, consulta Configura marcas de bases de datos de datos.
  • Crea la extensión google_plan_management en la base de datos. Para obtener más información, consulta Habilita una extensión.
  • Otorga google_plan_management_role a los usuarios de la base de datos que deseen usar la administración de planes de consultas y administrar planes de consultas.

    1. En la Google Cloud consola de, ve a la página Clústeres de AlloyDB.

      Ir a los clústeres

    2. Haz clic en la instancia requerida.

    3. Haz clic en AlloyDB Studio y, luego, en la pestaña Editor 1.

    4. Ingresa la siguiente consulta:

      GRANT google_plan_management_role TO DATABASE_USER;
      

      Reemplaza DATABASE_USER por el usuario al que deseas otorgar el rol.

    5. Haz clic en Ejecutar.

Visualiza los planes de consultas con seguimiento

La administración de planes de consultas proporciona una vista de plan de consultas que muestra todos los planes de consultas con seguimiento, sus tiempos de ejecución y otra información. Un plan de consultas con seguimiento es un plan de consultas que genera el optimizador y se almacena en el repositorio de planes.

Para ver los planes históricos con seguimiento, ejecuta la siguiente consulta:

SELECT * FROM google_plan_management.tracked_plans_view;

La respuesta a la consulta es similar a la siguiente:

db_id                | 5
db_name              | postgres
user_id              | 16392
user_name            | postgres
logical_query_id     | 15480571796188147798
plan_id              | 4740866759615354783
query                | SELECT c1, c2, c3 FROM t1 WHERE c1 = 1;
plan                 | Seq Scan on public.t1                                                                                                                                                            +
                     |   Output: c1, c2, c3                                                                                                                                                             +
                     |   Filter: (t1.c1 = ?)
total_execution_time | 0.003937501
num_executions       | 1
creation_time        | 2024-11-06 16:52:25.200737+00
last_used_time       | 2024-11-06 16:52:25.200737+00

Inhabilita el seguimiento del plan de consultas

Si no deseas que la administración de planes de consultas realice un seguimiento de los planes de consultas que genera el optimizador, debes inhabilitar la marca de base de datos google_plan_management.enable_track_plans. Esta marca está habilitada de forma predeterminada y te recomendamos que la dejes activada. Para obtener más información, consulta Configura marcas de bases de datos.

Visualiza los planes administrados

Puedes ver todas las consultas y los planes que administra la administración de planes de consultas, incluidos los planes aprobados y rechazados.

Para ver los planes administrados, ejecuta la siguiente consulta:

SELECT * FROM google_plan_management.managed_plans_view;

La respuesta a la consulta es similar a la siguiente:

db_id            | 5
db_name          | postgres
user_id          | 16392
user_name        | postgres
logical_query_id | 15480571796188147798
plan_id          | 4740866759615354783
status           | approved

Aprueba un plan

El optimizador selecciona un plan de consultas de forma dinámica, lo que significa que puede elegir diferentes planes de consultas para la misma consulta en diferentes momentos. Para aplicar una selección de plan coherente, puedes usar la administración de planes de consultas para aprobar uno o más planes de consultas para una consulta determinada.

Si apruebas varios planes, la administración de planes de consultas compara todos los planes aprobados y selecciona el plan más rentable para la ejecución de consultas.

Para evaluar y aprobar un plan para una consulta, sigue estos pasos:

  1. Visualiza los planes con seguimiento que generó el optimizador y, luego, identifica el logical_query_id en la respuesta.

  2. Revisa todos los planes que se generan para el logical_query_id. Puedes calcular el tiempo de ejecución promedio de cada plan con los valores total_execution_time y num_executions y, luego, decidir el mejor plan para tu consulta.

    La columna plan incluye otros detalles, como el índice usado o el método de clasificación usado, que pueden ayudarte a decidir un plan de consultas.

  3. Para aprobar el plan que deseas aplicar a la consulta, ejecuta la siguiente consulta:

      SELECT google_plan_management.approve_plan(QUERY_ID, PLAN_ID);
    

    Reemplaza lo siguiente:

    • QUERY_ID: el logical_query_id único para la consulta. Cada ID de consulta puede estar asociado con varios IDs de plan.
    • PLAN_ID: el plan_id único para la consulta.

Rechaza un plan

Puedes rechazar cualquier plan aprobado para una consulta y evitar que la administración de planes de consultas aplique el plan a la consulta. Los planes rechazados no se borran y están disponibles en la lista de planes con seguimiento.

Para rechazar un plan aprobado, ejecuta la siguiente consulta:

    SELECT google_plan_management.deny_plan(QUERY_ID, PLAN_ID);

Borra un plan aprobado

Puedes borrar un plan aprobado del repositorio de planes. Cuando borras un plan aprobado, ese plan ya no aparece en la lista de planes administrados.

Para borrar un plan aprobado, ejecuta la siguiente consulta:

    SELECT google_plan_management.update_plan_status(QUERY_ID, PLAN_ID, 'delete');

Deja de usar los planes aprobados de forma temporal

Si deseas dejar de usar los planes aprobados para tus consultas de forma temporal, debes inhabilitar la marca de base de datos google_plan_management.enable_steer_plans. Esta marca está habilitada de forma predeterminada. Para obtener más información, consulta Configura marcas de bases de datos.

Limitaciones

  • No puedes usar la administración de planes de consultas en tablas particionadas ni en conjuntos de agrupamiento.
  • La administración de planes de consultas solo se admite en la instancia principal.
  • El repositorio de planes de consultas puede almacenar hasta 100, 000 planes únicos y no proporciona una política de retención.

¿Qué sigue?