Administra los planes de consultas

En este documento, se describe cómo mejorar el rendimiento de tu plan de ejecución de consultas con la administración de planes de ejecución de consultas en AlloyDB para PostgreSQL. La administración del plan de consultas hace 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 búsquedas y los costos asociados, puedes aprobar un plan que se aplique de forma coherente a una búsqueda determinada. Este enfoque garantiza la selección de un plan de consultas rentable 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 según los costos estimados. Muchos factores influyen en el costo de la consulta, por ejemplo, los parámetros de la consulta, la complejidad de la consulta, el tamaño de la tabla, los índices disponibles y los recursos del sistema.

Dado que 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 genera resultados óptimos. Cuando procesa una consulta, el optimizador evalúa varios planes de ejecución y trata de elegir el más rentable.

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

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

Repositorio del plan de consultas
Cuando habilitas la administración del plan 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 del plan 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 búsqueda específica. La administración de planes de consultas hace 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 base de datos.
  • Crea la extensión google_plan_management en la base de datos. Para obtener más información, consulta Cómo habilitar 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 consola de Google Cloud , 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 otorgarle el rol.

    5. Haz clic en Ejecutar.

Cómo ver los planes de consultas a los que se hace seguimiento

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

Para ver los planes históricos registrados, 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 del plan de consultas haga un seguimiento de los planes de consultas generados por 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 base de datos.

Cómo ver 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

Cómo aprobar un plan

El optimizador selecciona un plan de consultas de forma dinámica, lo que significa que podría elegir planes de consultas diferentes para la misma consulta en diferentes momentos. Para aplicar una selección de planes 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 comparará todos los planes aprobados y seleccionará el más rentable para la ejecución de la consulta.

Para evaluar y aprobar un plan para una búsqueda, sigue estos pasos:

  1. Consulta los planes registrados que generó el optimizador e 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 cuál es el mejor plan para tu búsqueda.

    La columna plan incluye otros detalles, como el índice o el método de ordenamiento que se usaron, 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: Es el logical_query_id único de la búsqueda. Cada ID de búsqueda puede estar asociado a varios IDs de plan.
    • PLAN_ID: Es el plan_id único de la búsqueda.

Cómo rechazar un plan

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

Para rechazar un plan aprobado, ejecuta la siguiente consulta:

    SELECT google_plan_management.deny_plan(QUERY_ID, PLAN_ID);

Cómo borrar un plan aprobado

Puedes borrar un plan aprobado del repositorio de planes. Cuando borras un plan aprobado, este 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');

Cómo dejar de usar temporalmente los planes aprobados

Si deseas dejar de usar temporalmente los planes aprobados para tus consultas, debes inhabilitar la marca de la 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 base de datos.

Limitaciones

  • No puedes usar la administración del plan de consultas en tablas particionadas ni en conjuntos de agrupamiento.
  • La administración del plan 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?