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 afficher et interroger ses recommandations sous forme de table, ou demander une analyse et un rapport à la demande à tout moment.
Afficher les recommandations du conseiller d'index
AlloyDB exécute automatiquement et régulièrement l'analyse du conseiller d'index. Vous pouvez lire ses résultats via deux vues de table situées dans chacune de vos bases de données:
google_db_advisor_recommended_indexes
ré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_report
liste chaque requête pour laquelle l'assistant recommande un ou plusieurs nouveaux index. Chaque ligne résume 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 tableau, exécutez cette requête:
SELECT * FROM google_db_advisor_recommended_indexes;
Si l'analyse la plus récente du conseiller d'index ne génère aucune recommandation, cette requête renvoie une table sans ligne.
Étant donné que 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 de la manière que vous 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 du conseiller d'index, 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 indice à 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 par un autre utilisateur disposant du rôle alloydbsuperuser
, AlloyDB affiche toutes les recommandations actuelles de l'outil d'indexation. 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 du conseiller d'index
La colonne index
de la vue google_db_advisor_recommended_indexes
contient, dans chaque ligne, une instruction DDL CREATE INDEX
PostgreSQL complète pour générer l'index recommandé dans cette ligne.
Pour appliquer la recommandation de cette ligne, exécutez cette instruction LDD, exactement comme présentée. Cela inclut la copie dans le presse-papiers et le collage dans une invite 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 ne contient qu'une seule recommandation: ajouter un indice à colonne unique sur la colonne age
dans le tableau Students
du schéma School
. Pour appliquer ce conseil, saisissez une requête DDL exactement comme elle est représentée dans le rapport:
CREATE INDEX ON "School"."Students"("age");
Afficher les requêtes suivies du conseiller d'index
La vue google_db_advisor_workload_statements
contient la liste de toutes les requêtes que l'outil d'optimisation des index a suivies, 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 du conseiller d'index
Vous pouvez réinitialiser le comportement du conseiller d'index 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 du conseiller d'index.
Configurer le conseiller d'index
Bien que l'outil d'indexation soit conçu pour fonctionner dans 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. Pour en savoir plus, consultez la page de référence sur les indicateurs du conseiller d'index.