AlloyDB pour PostgreSQL propose un conseiller d'index qui suit les requêtes traitées régulièrement par votre base de données. Il analyse régulièrement ces requêtes pour recommander de nouveaux index susceptibles d'en améliorer les performances.
Vous pouvez utiliser les recommandations d'Index Advisor de différentes manières :
- Affichez et appliquez les recommandations dans le tableau de bord Insights sur les requêtes de la consoleGoogle Cloud .
- Interrogez les recommandations directement en tant que vues de table de base de données.
- Demandez une analyse et un rapport à la demande à tout moment.
Pour en savoir plus sur le fonctionnement d'Index Advisor, consultez la présentation d'Index Advisor.
Avant de commencer
Avant d'utiliser l'index advisor, assurez-vous de remplir les conditions suivantes.
Activer les extensions requises
Dans la console Google Cloud , accédez à la page Clusters.
Cliquez sur un cluster dans la colonne Nom de la ressource.
Sur la page Insights sur les requêtes, cliquez sur Modifier les paramètres de requête.
Cliquez sur Activer Index Advisor.
Afficher les recommandations d'Index Advisor
AlloyDB exécute automatiquement et régulièrement l'analyse d'Index Advisor. Vous pouvez afficher les recommandations d'index qui en résultent dans le tableau de bord Insights sur les requêtes de la console Google Cloud ou en interrogeant directement les vues de table de la base de données.
Afficher les recommandations dans Insights sur les requêtes
AlloyDB intègre l'Index Advisor aux insights sur les requêtes et aux insights sur les requêtes avancés dans la consoleGoogle Cloud .
Lorsque l'outil Index Advisor identifie des index de recherche vectorielle B-tree ou ScaNN manquants qui peuvent améliorer les performances des requêtes, le tableau de bord Insights sur les requêtes affiche les recommandations et les suggestions d'Index Advisor dans les vues suivantes :
Sur la page Insights sur les requêtes, dans la section Dimensions principales par charge de la base de données, sélectionnez l'onglet Requêtes. Dans le tableau, la colonne Recommandations affiche un lien Créer des index à côté de toute requête comportant des recommandations d'Index Advisor. Vous pouvez également ajouter un filtre pour Recommandation : Créer des index afin de n'afficher que les requêtes avec des recommandations d'index.
Sélectionner une requête dans la table Requêtes ouvre la page Détails de la requête, qui affiche une fiche Recommandation d'index dans l'exemple de vue du plan de requête et une table Index recommandés. Ces vues indiquent l'impact estimé sur les performances (élevé, moyen ou faible), le type d'index et la table cible recommandés, l'espace de stockage supplémentaire estimé nécessaire, le nombre de tables concernées et le nombre de requêtes concernées.
Cliquez sur Créer des index (ou sur Afficher les détails d'une recommandation) pour ouvrir le volet Créer des index pour améliorer les performances des requêtes. Dans ce volet, vous pouvez inspecter les instructions LDD
CREATE INDEXrecommandées, afficher l'amélioration estimée du temps d'exécution, cliquer sur Afficher les requêtes concernées pour inspecter toutes les requêtes de charge de travail qui bénéficient de l'index recommandé, et copier les commandes ou les ouvrir directement dans AlloyDB Studio.
Pour obtenir des instructions détaillées sur la configuration de la fréquence d'actualisation des recommandations, le filtrage des recommandations et la création d'index recommandés dans la consoleGoogle Cloud , consultez Utiliser l'Index Advisor d'AlloyDB pour PostgreSQL avec Insights sur les requêtes et Améliorer les performances des requêtes à l'aide des fonctionnalités avancées d'Insights sur les requêtes.
Afficher les recommandations à l'aide des vues de base de données
Vous pouvez également lire les résultats de l'Index Advisor via deux vues de table situées dans chacune de vos bases de données :
google_db_advisor_recommended_indexesrépertorie les nouveaux index recommandés pour sa base de données. Il comprend également des estimations de l'espace de stockage requis pour chaque index et du nombre de requêtes que chaque index peut affecter.google_db_advisor_workload_reportrépertorie chaque requête pour laquelle le conseiller recommande un ou plusieurs nouveaux index. Chaque ligne récapitule les recommandations pour la requête concernée.
Par exemple, pour afficher les résultats de l'analyse de recommandation d'index la plus récente, au format d'une table, exécutez la requête suivante :
SELECT * FROM google_db_advisor_recommended_indexes;
Si l'Index Advisor ne trouve aucune recommandation lors de sa dernière analyse, cette requête renvoie une table sans lignes.
Comme tous ces rapports existent en tant que vues de base de données ordinaires, vous pouvez écrire des requêtes qui filtrent ou présentent les informations comme vous le souhaitez. Par exemple, pour afficher un rapport qui associe les index recommandés à la requête complète associée, associez les vues google_db_advisor_workload_report et google_db_advisor_workload_statements sur leurs colonnes query_id respectives :
SELECT DISTINCT recommended_indexes, query
FROM google_db_advisor_workload_report r, google_db_advisor_workload_statements s
WHERE r.query_id = s.query_id;
Demander manuellement une analyse d'index
Plutôt que d'attendre la prochaine analyse planifiée d'Index Advisor, vous pouvez demander à AlloyDB d'exécuter immédiatement une analyse et d'afficher son rapport. Pour ce faire, exécutez cette fonction SQL :
SELECT * FROM google_db_advisor_recommend_indexes();
Une fois l'analyse terminée, AlloyDB affiche un rapport sous forme de table contenant la description et les besoins de stockage estimés de tous les index recommandés. Si l'analyse ne trouve aucun nouvel index à recommander, la vue ne contient aucune ligne.
Notez que le rôle utilisateur PostgreSQL qui exécute cette commande peut affecter les recommandations affichées. Si cette requête est exécutée par postgres ou un autre utilisateur disposant du rôle alloydbsuperuser, AlloyDB affiche toutes les recommandations actuelles de l'Index Advisor. Sinon, AlloyDB limite son affichage aux recommandations d'index en fonction des requêtes émises par l'utilisateur actuel de la base de données.
Appliquer les recommandations d'Index Advisor
Dans le tableau de bord Insights sur les requêtes de la console Google Cloud , vous pouvez cliquer sur Créer des index pour une requête, cliquer sur Copier toutes les commandes d'index (ou sur Ouvrir les commandes dans Studio pour ouvrir les instructions CREATE INDEX dans AlloyDB Studio), puis exécuter les commandes sur votre instance principale. Pour obtenir des instructions détaillées, consultez Créer des index recommandés dans les insights sur les requêtes.
Lorsque vous interrogez directement une vue de base de données, la colonne index de la vue google_db_advisor_recommended_indexes contient, sur chaque ligne, une instruction LDD PostgreSQL CREATE INDEX complète permettant de générer l'index recommandé sur cette ligne.
Pour appliquer la recommandation de cette ligne, exécutez cette instruction LDD, exactement telle qu'elle est présentée. Cela inclut de le copier dans votre presse-papiers et de le coller dans une requête psql.
Par exemple, considérons ce résultat de l'exécution manuelle d'une analyse à l'aide de la requête décrite dans la section précédente :
index | estimated_storage_size_in_mb
--------------------------------------------+------------------------------
CREATE INDEX ON "School"."Students"("age") | 3
(1 row)
Ce rapport contient une seule recommandation : ajouter un nouvel index à une seule colonne sur la colonne age dans la table Students du schéma School. Pour appliquer ce conseil, saisissez une requête LDD exactement comme elle est représentée dans le rapport :
CREATE INDEX ON "School"."Students"("age");
Afficher les requêtes suivies d'Index Advisor
La vue google_db_advisor_workload_statements contient la liste de toutes les requêtes suivies par l'Index Advisor, ainsi que des métadonnées importantes pour chacune d'elles, telles que les métriques suivantes :
- Nombre de fois où l'instance a exécuté cette requête
- Temps total passé par l'instance à traiter ces requêtes
- ID de l'utilisateur de la base de données qui exécute ces requêtes
Effacer les requêtes suivies d'Index Advisor
Vous pouvez réinitialiser le comportement de l'Index Advisor sur une instance en effaçant ses requêtes suivies. Pour ce faire, exécutez cette fonction SQL :
SELECT google_db_advisor_reset();
AlloyDB vide immédiatement la collection de requêtes suivies de l'Index Advisor.
Configurer Index Advisor
Bien que l'Index Advisor fonctionne pour la plupart des cas d'utilisation avec ses paramètres par défaut, vous pouvez affiner son comportement en définissant différents indicateurs de base de données.
Par exemple, vous pouvez définir l'option google_db_advisor.enable_vector_index_advisor pour permettre à l'Index Advisor de recommander des index pour les requêtes vectorielles. Cette option est activée par défaut.
Pour en savoir plus, consultez Options d'Index Advisor.