Compartir a través de


Uso de recomendaciones de índice generadas por el ajuste de índices en Azure Database for PostgreSQL: servidor flexible

El ajuste de índices conserva las recomendaciones que realiza en un conjunto de tablas ubicadas en el esquema de intelligentperformance en la base de datos de azure_sys.

Actualmente, esa información se puede leer mediante la compilación de páginas de Azure Portal para este propósito o mediante la ejecución de consultas para recuperar datos de dos vistas disponibles dentro de intelligent performance la base de datos de azure_sys.

Consumo de recomendaciones de índice a través de Azure Portal

  1. Inicie sesión en Azure Portal y seleccione la instancia de servidor flexible de Azure Database for PostgreSQL.

  2. Seleccione Ajuste de índices en la sección Rendimiento inteligente del menú.

    • Si la característica está habilitada, pero aún no se generan recomendaciones, la pantalla tendrá este aspecto:

      Captura de pantalla que muestra el aspecto de la página

    • Si la característica está deshabilitada actualmente y nunca generó recomendaciones en el pasado, la pantalla tendrá este aspecto:

      Captura de pantalla que muestra el aspecto de la página

    • Si la característica está habilitada y aún no se generan recomendaciones, la pantalla tiene el siguiente aspecto:

      Captura de pantalla que muestra el aspecto de la página

    • Si la característica está deshabilitada, pero alguna vez generó recomendaciones, la pantalla tiene el siguiente aspecto:

      Captura de pantalla que muestra el aspecto de la página

  3. Si hay recomendaciones disponibles, seleccione en el índice Ver resumen de recomendaciones para acceder a la lista completa:

    Captura de pantalla que muestra el aspecto de la página

  4. En la lista se muestran todas las recomendaciones disponibles con algunos detalles de cada una de ellas. De forma predeterminada, la lista se ordena por Último recomendado en orden descendente, mostrando las recomendaciones más recientes en la parte superior. Sin embargo, puede ordenar por cualquier otra columna y puede usar el cuadro de filtrado para reducir la lista de elementos mostrados a aquellos cuya base de datos, esquema o nombres de tabla contengan el texto proporcionado:

    Captura de pantalla que muestra el aspecto de la página

  5. Para ver más información sobre cualquier recomendación específica, seleccione el nombre de esa recomendación y el panel índice de recomendación de detalles se abre en el lado derecho de la pantalla para mostrar todos los detalles disponibles sobre la recomendación:

    Captura de pantalla que muestra el aspecto del panel

Consumir recomendaciones de índices a través de vistas disponibles en la base de datos azure_sys

  1. Conéctese a la base de datos azure_sys disponible en el servidor con cualquier rol que tenga permiso para conectarse a la instancia. Los miembros del rol public pueden leer desde estas vistas.
  2. Ejecute consultas en la vista sessions para recuperar los detalles sobre las sesiones de recomendación.
  3. Ejecute consultas en la vista recommendations para recuperar las recomendaciones generadas por la optimización de índices para CREATE INDEX y DROP INDEX.

Vistas

Las vistas de la base de datos azure_sys proporcionan una manera cómoda de acceder a las recomendaciones de índice generadas por el ajuste del índice y recuperarlas. En concreto, las vistas createindexrecommendations y dropindexrecommendations contienen información detallada sobre las recomendaciones CREATE INDEX y DROP INDEX, respectivamente. Estas vistas exponen datos como el identificador de sesión, el nombre de la base de datos, el tipo de asesor, las horas de inicio y detención de la sesión de optimización, el identificador de recomendación, el tipo de recomendación, el motivo de la recomendación y otros detalles pertinentes. Al consultar estas vistas, los usuarios pueden acceder y analizar fácilmente las recomendaciones de índice generadas por el ajuste del índice.

intelligentperformance.sessions

La vista sessions expone todos los detalles de todas las sesiones de optimización de índices.

nombre de la columna tipo de datos Descripción
session_id uuid Identificador único global asignado a cada nueva sesión de optimización que se inicia.
database_name varchar(64) Nombre de la base de datos en cuyo contexto se ejecutó la sesión de optimización de índices.
session_type intelligentperformance.recommendation_type Indica los tipos de recomendaciones que podría generar esta sesión de optimización de índices. Los valores posibles son: CreateIndex, DropIndex. Las sesiones de tipo CreateIndex pueden generar recomendaciones del tipo CreateIndex. Las sesiones de tipo DropIndex pueden generar recomendaciones de tipos DropIndex o ReIndex.
run_type intelligentperformance.recommendation_run_type Indica la forma en que se inició esta sesión. Los valores posibles son: Scheduled. A las sesiones ejecutadas automáticamente según el valor de index_tuning.analysis_interval, se les asigna un tipo de ejecución de Scheduled.
estado intelligentperformance.recommendation_state Indica el estado actual de la sesión. Los valores posibles son: Error, Success o InProgress. Las sesiones cuya ejecución no se pudo ejecutar se establecen como Error. Las sesiones que completaron su ejecución correctamente, independientemente de si generaron o no recomendaciones, se establecen como Success. Las sesiones que todavía se ejecutan se establecen como InProgress.
start_time Marca de tiempo sin zona horaria Marca de tiempo en la que se inició la sesión de optimización que generó esta recomendación.
stop_time Marca de tiempo sin zona horaria Marca de tiempo en la que se inició la sesión de optimización que generó esta recomendación. NULL si la sesión está en curso o se anuló debido a algún error.
recommendations_count integer Número total de recomendaciones generadas en esta sesión.

intelligentperformance.recommendations

La vista recommendations expone todos los detalles de todas las recomendaciones generadas en cualquier sesión de optimización cuyos datos siguen estando disponibles en las tablas subyacentes.

nombre de la columna tipo de datos Descripción
recommendation_id integer Número que identifica de forma única una recomendación en todo el servidor.
last_known_session_id uuid A cada sesión de optimización de índices se le asigna un identificador único global. El valor de esta columna representa el de la sesión que generó esta recomendación más recientemente.
database_name varchar(64) Nombre de la base de datos en cuyo contexto se generó la recomendación.
recommendation_type intelligentperformance.recommendation_type Indica el tipo de la recomendación generada. Los valores posibles son: CreateIndex, DropIndex o ReIndex.
initial_recommended_time Marca de tiempo sin zona horaria Marca de tiempo en la que se inició la sesión de optimización que generó esta recomendación.
last_recommended_time Marca de tiempo sin zona horaria Marca de tiempo en la que se inició la sesión de optimización que generó esta recomendación.
times_recommended integer Marca de tiempo en la que se inició la sesión de optimización que generó esta recomendación.
reason text Motivo que justifica por qué se generó esta recomendación.
recommendation_context json Contiene la lista de identificadores de consulta para las consultas afectadas por la recomendación, el tipo de índice que se recomienda, el nombre del esquema y el nombre de la tabla en la que se recomienda el índice, las columnas de índice, el nombre del índice y el tamaño estimado en bytes del índice recomendado.
Motivos para crear recomendaciones de índice

Cuando el ajuste de índices recomienda la creación de un índice, agrega al menos una de las siguientes razones:

Motivo
Column <column> appear in Join On clause(s) in query <queryId>
Column <column> appear in Equal Predicate clause(s) in query <queryId>
Column <column> appear in Non-Equal Predicate clause(s) in query <queryId>
Column <column> appear in Group By clause(s) in query <queryId>
Column <column> appear in Order By clause(s) in query <queryId>
Motivos para quitar recomendaciones de índice

Cuando el ajuste de índices identifica los índices marcados como no válidos, propone quitarlo con el siguiente motivo:

The index is invalid and the recommended recovery method is to reindex.

Para obtener más información sobre por qué y cuándo los índices están marcados como no válidos, consulte la documentación oficial de REINDEX en PostgreSQL.

Motivos para quitar recomendaciones de índice

Cuando el ajuste de índices detecta un índice que no se usa para, al menos, el número de días establecido en index_tuning.unused_min_period, propone quitarlo con el siguiente motivo:

The index is unused in the past <days_unused> days.

Cuando el ajuste de índices detecta índices duplicados, uno de los duplicados sobrevive y propone quitar el resto. La razón proporcionada siempre tiene el siguiente texto inicial:

Duplicate of <surviving_duplicate>.

Seguido de otro texto que explica la razón por la que se ha elegido cada uno de los duplicados para la eliminación:

Motivo
The equivalent index "<surviving_duplicate>" is a Primary key, while "<droppable_duplicate>" is not.
The equivalent index "<surviving_duplicate>" is a unique index, while "<droppable_duplicate>" is not.
The equivalent index "<surviving_duplicate>" is a constraint, while "<droppable_duplicate>" is not.
The equivalent index "<surviving_duplicate>" is a valid index, while "<droppable_duplicate>" is not.
The equivalent index "<surviving_duplicate>" has been chosen as replica identity, while "<droppable_duplicate>" is not.
The equivalent index "<surviving_duplicate>" was used to cluster the table, while "<droppable_duplicate>" was not.
The equivalent index "<surviving_duplicate>" has a smaller estimated size compared to "<droppable_duplicate>".
The equivalent index "<surviving_duplicate>" has more tuples compared to "<droppable_duplicate>".
The equivalent index "<surviving_duplicate>" has more index scans compared to "<droppable_duplicate>".
The equivalent index "<surviving_duplicate>" has been fetched more times compared to "<droppable_duplicate>".
The equivalent index "<surviving_duplicate>" has been read more times compared to "<droppable_duplicate>".
The equivalent index "<surviving_duplicate>" has a shorter length compared to "<droppable_duplicate>".
The equivalent index "<surviving_duplicate>" has a smaller oid compared to "<droppable_duplicate>".

Si el índice no solo es extraíble debido a la duplicación, sino que también no se usa para, al menos, el número de días establecido en index_tuning.unused_min_period, el texto siguiente se anexa al motivo:

Also, the index is unused in the past <days_unused> days.

Aplicar la recomendación de índice

Las recomendaciones de índice contienen la instrucción SQL que se puede ejecutar para implementar la recomendación.

En las secciones siguientes se muestra cómo se puede obtener esta instrucción para una recomendación determinada.

Una vez que tenga la instrucción, puede usar cualquier cliente de PostgreSQL de su preferencia para conectarse al servidor y aplicar la recomendación.

Obtención de la instrucción SQL a través de la página de optimización de índices en Azure Portal

  1. Inicie sesión en Azure Portal y seleccione la instancia de servidor flexible de Azure Database for PostgreSQL.

  2. Seleccione Ajuste de índices en la sección Rendimiento inteligente del menú.

  3. Suponiendo que el ajuste del índice ya haya producido recomendaciones, seleccione Ver resumen de recomendaciones del índice para acceder a la lista de recomendaciones disponibles.

    Captura de pantalla que muestra el aspecto de la página

  4. En la lista de recomendaciones, cualquiera de las siguientes:

    • Seleccione los puntos suspensivos situados a la derecha de la recomendación para la que desea obtener la instrucción SQL y seleccione Copiar script SQL.

      Captura de pantalla que muestra cómo copiar la instrucción SQL desde la página

    • O bien, seleccione el nombre de la recomendación para mostrar sus Detalles de recomendación de índice y seleccione el icono copiar en el portapapeles en el cuadro de texto script de SQL para copiar la instrucción SQL.

      Captura de pantalla que muestra cómo copiar la instrucción SQL desde la página