Partager via


Utiliser les recommandations d’index produites par l’optimisation des index dans Azure Database pour PostgreSQL - Serveur flexible

L’optimisation d’index conserve les recommandations qu’elle effectue dans un ensemble de tables situées sous le schéma intelligentperformance dans la base de données azure_sys.

Actuellement, ces informations peuvent être lues à l’aide de la build de la page du portail Azure prévue à cet effet ou en exécutant des requêtes pour récupérer des données à partir de deux vues disponibles dans intelligent performance de la base de données azure_sys.

Consommer les recommandations d’index via le portail Azure

  1. Connectez-vous au portail Azure et sélectionnez votre instance de serveur flexible Azure Database pour PostgreSQL.

  2. Sélectionnez Optimisation des index dans la section Performances intelligentes du menu.

    • Si la fonctionnalité est activée mais qu’aucune recommandation n’est encore produite, l’écran ressemble à celui-ci :

      Capture d’écran montrant l’aspect de la page « Optimisation des index » quand la fonctionnalité est activée, mais qu’il n’existe aucune recommandation.

    • Si la fonctionnalité est actuellement désactivée et qu’elle n’a jamais produit de recommandations dans le passé, l’écran ressemble à celui-ci :

      Capture d’écran montrant l’aspect de la page « Optimisation des index » quand la fonctionnalité est désactivée, et qu’il n’existe aucune recommandation.

    • Si la fonctionnalité est activée et qu’aucune recommandation n’a encore été produite, l’écran ressemble à celui-ci :

      Capture d’écran montrant l’aspect de la page « Optimisation des index » quand la fonctionnalité est activée, et qu’il n’existe aucune recommandation.

    • Si la fonctionnalité est désactivée mais qu’elle a déjà produit des recommandations, l’écran ressemble à celui-ci :

      Capture d’écran montrant l’aspect de la page « Optimisation des index » quand la fonctionnalité est désactivée, et qu’il existe des recommandations.

  3. Si des recommandations sont disponibles, sélectionnez le résumé Afficher les recommandations d’index pour accéder à la liste complète :

    Capture d’écran montrant l’aspect de la page « Optimisation des index » quand il existe des recommandations, et présentant le mode d’accès à la liste complète.

  4. La liste affiche toutes les recommandations disponibles avec quelques détails pour chacune d’elles. Par défaut, la liste est triée par dernière recommandation dans l’ordre décroissant, les recommandations les plus récentes étant affichées au début. Toutefois, vous pouvez effectuer un tri par n’importe quelle autre colonne et utiliser la zone de filtrage pour affiner la liste des éléments et afficher uniquement les éléments dont les noms de base de données, de schéma ou de table contiennent le texte fourni :

    Capture d’écran montrant l’aspect de la page « Recommandations d’index » avec plusieurs recommandations.

  5. Pour plus d’informations sur une recommandation spécifique, sélectionnez le nom de cette recommandation. Le volet des détails de la recommandation d’index s’ouvre alors sur le côté droit de l’écran pour afficher tous les détails disponibles sur la recommandation :

    Capture d’écran montrant l’aspect du volet « Détails de la recommandation d’index » pour une recommandation particulière.

Consommer les recommandations d’index par le biais de vues disponibles dans la base de données azure_sys

  1. Connectez-vous à la base de données azure_sys disponible dans votre serveur avec n’importe quel rôle autorisé à se connecter à l’instance. Les membres du rôle public peuvent lire ces vues.
  2. Exécutez des requêtes sur la vue sessions pour récupérer les détails relatifs aux sessions de recommandation.
  3. Exécutez des requêtes sur la vue recommendations afin de récupérer les recommandations produites par l’optimisation des index pour CREATE INDEX et DROP INDEX.

Vues

Les vues de la base de données azure_sys offrent un moyen pratique d’accéder aux recommandations d’index générées par l’optimisation d’index et de les récupérer. En particulier, les vues createindexrecommendations et dropindexrecommendations contiennent des informations détaillées sur les recommandations CREATE INDEX et DROP INDEX, respectivement. Ces vues affichent des données telles que l’ID de session, le nom de la base de données, le type de conseiller, les heures de début et de fin de la session d’optimisation, l’ID de recommandation, le type de recommandation, le motif de la recommandation et d’autres détails pertinents. En interrogeant ces vues, les utilisateurs peuvent facilement accéder aux recommandations d’index produites par l’optimisation d’index et les analyser.

intelligentperformance.sessions

La vue sessions expose tous les détails de toutes les sessions d’optimisation des index.

column name type de données Description
session_id uuid Identificateur global unique affecté à chaque nouvelle session d’optimisation lancée.
database_name varchar(64) Nom de la base de données dans le contexte de laquelle la session d’optimisation des index a été exécutée.
session_type intelligentperformance.recommendation_type Indique les types de recommandations que cette session d’optimisation des index peut produire. Les valeurs possibles sont les suivantes : CreateIndex, DropIndex. Les sessions de type CreateIndex peuvent produire des recommandations de type CreateIndex. Les sessions de type DropIndex peuvent produire des recommandations de type DropIndex ou ReIndex.
run_type intelligentperformance.recommendation_run_type Indique la façon dont cette session a été lancée. Les valeurs possibles sont les suivantes : Scheduled. Les sessions exécutées automatiquement en fonction de la valeur index_tuning.analysis_interval se voient affecter le type d’exécution Scheduled.
state intelligentperformance.recommendation_state Indique l’état actuel de la session. Les valeurs possibles sont les suivantes : Error, Success, InProgress. Les sessions dont l’exécution a échoué sont définies en tant que Error. Les sessions dont l’exécution s’est correctement effectuée, qu’elles aient généré ou non des recommandations, sont définies en tant que Success. Les sessions qui sont toujours en cours d’exécution sont définies en tant que InProgress.
start_time timestamp sans timezone Horodatage auquel la session d’optimisation qui a produit cette recommandation a été démarrée.
stop_time timestamp sans timezone Horodatage auquel la session d’optimisation qui a produit cette recommandation a été arrêtée. NULL si la session est en cours ou a été abandonnée en raison d’un échec.
recommendations_count entier Nombre total de recommandations produites au cours de cette session.

intelligentperformance.recommendations

La vue recommendations expose tous les détails de toutes les recommandations générées dans une session d’optimisation dont les données sont toujours disponibles dans les tables sous-jacentes.

column name type de données Description
recommendation_id entier Numéro qui identifie de manière unique une recommandation dans l’ensemble du serveur.
last_known_session_id uuid Chaque session d’optimisation des index se voit affecter un identificateur global unique. La valeur de cette colonne représente celle de la session qui a produit récemment cette recommandation.
database_name varchar(64) Nom de la base de données dans laquelle le contexte a produit la recommandation.
recommendation_type intelligentperformance.recommendation_type Indique le type de recommandation produite. Les valeurs possibles sont les suivantes : CreateIndex, DropIndex, ReIndex.
initial_recommended_time timestamp sans timezone Horodatage auquel la session d’optimisation qui a produit cette recommandation a été arrêtée.
last_recommended_time timestamp sans timezone Horodatage auquel la session d’optimisation qui a produit cette recommandation a été arrêtée.
times_recommended entier Horodatage auquel la session d’optimisation qui a produit cette recommandation a été arrêtée.
reason texte Motif expliquant pourquoi cette recommandation a été produite.
recommendation_context json Contient la liste des identificateurs des requêtes affectées par la recommandation, le type d’index recommandé, le nom du schéma et le nom de la table sur laquelle l’index est recommandé, les colonnes d’index, le nom de l’index et la taille estimée en octets de l’index recommandé.
Raisons liées aux recommandations de création d’index

Quand l’optimisation des index recommande la création d’un index, elle ajoute au moins l’une des raisons suivantes :

Motif
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>
Raisons liées aux recommandations de suppression d’index

Quand l’optimisation des index identifie des index marqués comme étant non valides, elle propose de les supprimer pour la raison suivante :

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

Pour en savoir plus sur la raison et le moment où les index sont marqués comme étant non valides, consultez REINDEX dans la documentation officielle de PostgreSQL.

Raisons liées aux recommandations de suppression d’index

Quand l’optimisation des index détecte un index inutilisé depuis au moins le nombre de jours défini dans index_tuning.unused_min_period, elle propose de le supprimer pour la raison suivante :

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

Quand l’optimisation des index détecte des index dupliqués, elle conserve l’un des doublons, et propose de supprimer l’autre. La raison fournie commence toujours par le texte suivant :

Duplicate of <surviving_duplicate>.

Suivi d’un autre texte expliquant la raison pour laquelle chacun des doublons a été choisi pour être supprimé :

Motif
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 l’index est non seulement éligible à la suppression en raison d’une duplication, mais qu’il est également inutilisé depuis au moins le nombre de jours défini dans index_tuning.unused_min_period, le texte suivant est ajouté à la raison :

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

Appliquer des recommandations d’index

Les recommandations d’index contiennent l’instruction SQL que vous pouvez exécuter pour implémenter la recommandation.

Les sections suivantes montrent comment cette instruction peut être obtenue pour une recommandation particulière.

Une fois que vous avez l’instruction, vous pouvez utiliser le client PostgreSQL de votre choix pour vous connecter à votre serveur et appliquer la recommandation.

Obtenir une instruction SQL via la page Optimisation des index du portail Azure

  1. Connectez-vous au portail Azure et sélectionnez votre instance de serveur flexible Azure Database pour PostgreSQL.

  2. Sélectionnez Optimisation des index dans la section Performances intelligentes du menu.

  3. En supposant que l’optimisation d’index a déjà produit des recommandations, sélectionnez le résumé Afficher les recommandations d’index pour accéder à la liste des recommandations disponibles.

    Capture d’écran montrant l’aspect de la page « Optimisation des index » quand il existe des recommandations, et présentant le mode d’accès à la liste complète.

  4. Dans la liste des recommandations, effectuez l’une des opérations suivantes :

    • Sélectionnez les points de suspension à droite de la recommandation pour laquelle vous souhaitez obtenir l’instruction SQL, puis sélectionnez Copier le script SQL.

      Capture d’écran montrant comment copier l’instruction SQL à partir de la page « Recommandations d’index ».

    • Sélectionnez le nom de la recommandation pour afficher les détails de la recommandation d’index, puis sélectionnez l’icône de copie dans le Presse-papiers dans la zone de texte Script SQL pour copier l’instruction SQL.

      Capture d’écran montrant comment copier l’instruction SQL à partir de la page « Détails de la recommandation d’index ».