Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Index peu utilisés et redondants
Présentation de
Les index améliorent les performances globales des requêtes des charges de travail, mais entraînent des coûts. Chaque index consomme du stockage et I/O des ressources, et les opérations d'écriture doivent mettre à jour tous les index de la collection. Si votre base de données contient des index inutilisés, sous-utilisés ou redondants, cela entraîne une surcharge du cluster, ce qui entraîne une dégradation des performances. Plusieurs index inutiles créent un anti-modèle qui entraîne des problèmes de performances, une augmentation des coûts de stockage et une augmentation des frais d'exploitation.
Scénarios d'indexation sous-optimaux
-
Index non utilisés : index créés pour des requêtes ponctuelles ou lors d'itérations de produits antérieures auxquels les modèles de requête actuels ne sont plus accessibles. Pour identifier les index inutilisés dans une collection, vous pouvez utiliser IndexStats. Pour de plus amples informations, veuillez consulter Comment analyser l'utilisation des index et identifier les index inutilisés ?.
-
Index redondants : plusieurs index couvrant des modèles clés qui se chevauchent ou des modèles de requête identiques. Exemple : un index à clé unique sur l'attribut A devient redondant lorsqu'un index composite couvre à la fois les attributs A et B, étant donné que l'index composite peut traiter les requêtes sur l'attribut A uniquement.
-
Over-Indexing: Création d'index « au cas où » sans analyser les modèles de requêtes réels ni les exigences de performance.
-
Indices de faible cardinalité : index sur des champs contenant peu de valeurs distinctes (par exemple, champs booléens, indicateurs de statut) qui offrent un avantage minimal en termes d'optimisation des requêtes.
Impact sur les performances du cluster
-
Stockage et E/S : chaque index consomme de l'espace de stockage et des ressources d'E/S, ce qui contribue aux coûts globaux. Si un index est inutilisé ou redondant, cela représente un coût inutile pour votre cluster.
-
Performances d'écriture dégradées : les opérations d'insertion, de mise à jour et de suppression doivent maintenir les index, ce qui entraîne une surcharge qui consomme des ressources. Les index inutilisés ou redondants ajoutent une surcharge inutile à ces opérations.
-
Pression sur la mémoire et le processeur : les index se disputent la mémoire du pool tampon et peuvent exclure les données fréquemment consultées si l'ensemble de travail ne convient pas à la mémoire de l'instance, ce qui les rend sous-optimales. BufferCacheHitRatio Le système consomme également des ressources du processeur pour maintenir les structures d'index.
Outils disponibles pour identifier les opportunités d'optimisation des indices
-
Outil de révision d'index :
-
Outil de détection de cardinalité des index
Rassembler le kit d'outils :
git clone https://github.com/awslabs/amazon-documentdb-tools.git
1. Outil de révision d'index
L'outil de révision des index analyse toutes les collections et tous les index pour fournir une liste des index, leurs modèles d'utilisation, et identifie les index redondants sur votre cluster Amazon DocumentDB. Exécutez cet outil sur toutes les instances de cluster pour une analyse complète. Pour plus d'informations, consultez la section Outil de révision d'index
Utilisation :
cd performance/index-review/ python3 index-review.py --server-alias <server-alias> --uri <mongodb-uri>
Fichiers de sortie
-
{server-alias}-collections.csv: Collection-level statistiques -
{server-alias}-indexes.csv: mesures détaillées d'utilisation de l'index -
{server-alias}-{timestamp}-index-review.json: données brutes pour une analyse plus approfondie
Note
Exécutez pour chaque instance du cluster avec un alias indépendant afin de générer des statistiques à partir de chaque instance, puis exécutez l'outil pour obtenir une analyse cumulative
Par exemple : python3 index-review.py --files "{server-alias}-{timestamp}-index-review.json, {server-alias}-{timestamp}-index-review.json" --server-alias full-review
2. Outil de détection de cardinalité des index
Cet outil identifie les index à faible cardinalité qui sont inefficaces pour les performances des requêtes.
Utilisation
cd performance/index-cardinality-detection/ python3 detect-cardinality.py --uri <mongodb-uri>
Paramètres
-
--threshold: pourcentage du seuil de cardinalité (par défaut : 1 %) -
--sample-count: nombre de documents à échantillonner (par défaut : 100 000) -
--max-collections: nombre maximum de collections à scanner par base de données (par défaut : 100)
Pour de plus amples informations, consultez https://aws.amazon.com/blogs/database/detect-and-fix-low-cardinality-indexes-in-amazon-documentdb/
Stratégies de remédiation
1. Suppression des index inutilisés et redondants
// Example: Drop unused index db.collection.dropIndex("unused_index_name")
Note
Les indices ne doivent jamais être abandonnés sans en discuter avec toutes les parties intéressées et sans tester les performances.
2. Optimisation de l'indice de faible cardinalité
-
Utiliser des index partiels avec des filtres
-
Conversion d'index simples à faible cardinalité en index composés