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.
Gestion des index Amazon DocumentDB
Rubriques
Création d'index Amazon DocumentDB
La création d'index dans Amazon DocumentDB nécessite la prise d'un certain nombre de décisions :
Dans quel délai doit-il être terminé ?
La collection peut-elle être inaccessible pendant la construction ?
Quelle quantité de puissance de calcul d'une instance peut être allouée à la construction ?
Quel type d'index faut-il créer ?
Cette section vous aide à répondre à ces questions et fournit les commandes et les exemples de surveillance pour créer un index Amazon DocumentDB sur votre collection de clusters basée sur une instance.
Consignes
Les directives suivantes incluent les limites de base et les compromis de configuration lors de la création de nouveaux index :
Prise en charge des versions d'Amazon DocumentDB : alors que l'indexation par un seul travailleur est prise en charge sur toutes les versions d'Amazon DocumentDB, l'indexation par plusieurs travailleurs n'est prise en charge que sur les versions 4.0 et 5.0 d'Amazon DocumentDB.
Compromis en termes de performances : l'augmentation du nombre de travailleurs participant au processus de création de l'index augmente CPU l'utilisation et les E/S de lecture sur l'instance principale de votre base de données Amazon DocumentDB. Les ressources nécessaires à la création d'un nouvel index ne seront pas disponibles pour votre charge de travail en cours d'exécution.
Clusters élastiques : l'indexation parallèle n'est pas prise en charge sur les clusters élastiques Amazon DocumentDB.
Nombre maximum de travailleurs : le nombre maximum de travailleurs que vous pouvez configurer dépend de la taille de votre instance principale dans votre cluster de base de données. C'est la moitié du nombre total de personnes présentes vCPUs sur l'instance principale de votre cluster de base de données. Par exemple, vous pouvez exécuter un maximum de 32 travailleurs sur une instance db.r6g.16xlarge qui en possède 64. vCPUs
Note
Les travailleurs parallèles ne sont pas pris en charge sur les classes d'instance 2xlarge et inférieures.
Nombre minimum de travailleurs : le nombre minimum de travailleurs que vous pouvez configurer est de un. Le paramètre par défaut pour la création d'index sur des clusters basés sur des instances est de deux travailleurs. Cependant, vous pouvez réduire le nombre de travailleurs à un en utilisant l'option « threads de travail ». Cela exécutera le processus avec un seul travailleur.
Compression d'index : Amazon DocumentDB ne prend pas en charge la compression d'index. La taille des données pour les index peut être plus importante que lorsque vous utilisez d'autres options.
Indexation de plusieurs collections : la moitié de vCPUs l'instance principale de votre cluster de base de données peut être utilisée pour les travailleurs configurés effectuant la création d'index sur plusieurs collections.
Types d'index : consultez ce billet de blog
pour obtenir une explication complète des types d'index pris en charge sur Amazon DocumentDB.
Premiers pas
Pour démarrer la création d'un index sur une collection, utilisez la createIndexes
commande. Par défaut, la commande exécute deux tâches parallèles, ce qui multiplie par deux la vitesse du processus de création d'index.
Par exemple, le processus de commande suivant montre comment créer un index pour le champ « user_name » dans un document et augmenter la vitesse du processus d'indexation à quatre travailleurs :
Créez des index à l'aide de deux workers parallèles sur le cluster :
db.runCommand({"createIndexes":"test","indexes":[{"key": {"user_name":1}, "name":"username_idx"}]})
Pour optimiser la vitesse du processus de création d'index, vous pouvez spécifier le nombre de travailleurs en utilisant l'option « threads de travail » (
"workers":<number>
) dans ladb.runCommand createIndexes
commande.Augmentez la vitesse du processus à quatre travailleurs parallèles :
db.runCommand({"createIndexes":"test","indexes":[{"key": {"user_name":1}, "name":"username_idx", "workers":4}]})
Note
Plus le nombre de travailleurs est élevé, plus la création de l'indice progresse rapidement. Toutefois, plus le nombre de travailleurs augmente, plus la charge sur les E/S de lecture vCPUs et de lecture de votre instance principale augmente. Assurez-vous que votre cluster est suffisamment provisionné pour faire face à la charge accrue sans dégrader les autres charges de travail.
État de progression de l'indexation
Le processus de création d'index fonctionne en initialisant, en scannant les collections, en triant les clés et, enfin, en insérant des clés au moyen d'un générateur d'index. Le processus comporte jusqu'à six étapes lorsque vous l'exécutez au premier plan, et jusqu'à neuf étapes lorsque vous l'exécutez en arrière-plan. Vous pouvez consulter les indicateurs d'état tels que le pourcentage d'achèvement, le nombre total de blocs de stockage numérisés, les clés triées et les clés insérées étape par étape.
Surveillez la progression du processus d'indexation à l'aide de la db.currentOp()
commande dans le shell mongo. L'achèvement à 100 % de la dernière étape indique que tous les index ont été créés avec succès :
db.currentOp({"command.createIndexes": { $exists : true } })
Types de construction d'index
Les quatre types de constructions d'index sont les suivants :
Premier plan : la version de l'index de premier plan bloque toutes les autres opérations de base de données jusqu'à ce que l'index soit créé. La version de premier plan d'Amazon DocumentDB comprend cinq étapes.
Premier plan (unique) - Les versions d'index de premier plan pour un seul document (unique) bloquent d'autres opérations de base de données, comme les versions de premier plan classiques. Contrairement à la version de premier plan de base, la version unique utilise une étape supplémentaire (tri des clés 2) pour rechercher les clés dupliquées. La version de premier plan (unique) comprend six étapes.
Arrière-plan : la génération de l'index en arrière-plan permet à d'autres opérations de base de données de s'exécuter au premier plan pendant la création de l'index. La construction en arrière-plan d'Amazon DocumentDB comprend huit étapes.
Arrière-plan (unique) - Les versions d'index d'arrière-plan pour un seul document (unique) permettent à d'autres opérations de base de données de s'exécuter au premier plan pendant la création de l'index. Contrairement à la version d'arrière-plan de base, la version unique utilise une étape supplémentaire (tri des clés 2) pour rechercher les clés dupliquées. La version d'arrière-plan (unique) comprend neuf étapes.
Étapes de création de l'index
Étape | Premier plan | Premier plan (unique) | Contexte | Contexte (unique) |
---|---|---|---|---|
Initialisation |
1 |
1 |
1 |
1 |
index de construction : initialisation |
2 |
2 |
2 |
2 |
index des bâtiments : collection de numérisation |
3 |
3 |
3 |
3 |
index du bâtiment : clés de tri 1 |
4 |
4 |
4 |
4 |
index du bâtiment : clés de tri 2 |
5 |
5 |
||
index de construction : insertion de clés |
5 |
6 |
5 |
6 |
validation : index de numérisation |
6 |
7 |
||
validation : tri des tuples |
7 |
8 |
||
validation : numérisation de la collection |
8 |
9 |
initialisation - createIndex prépare le générateur d'index. Cette phase doit être très brève.
building index : initialization - Le générateur d'index se prépare à créer l'index. Cette phase doit être très brève.
index de construction : analyse de la collection - Le générateur d'index effectue une analyse de collection pour collecter les clés d'index. L'unité de mesure est le « bloc ».
Note
Si plusieurs outils de travail sont configurés pour la création de l'index, ils sont affichés à cette étape. L'étape de « numérisation de la collecte » est la seule étape qui utilise plusieurs travailleurs pendant le processus de création de l'index. Toutes les autres étapes afficheront un seul travailleur.
index de construction : tri des clés 1 - Le générateur d'index trie les clés d'index collectées. L'unité de mesure est « clés ».
index de construction : clés de tri 2 - Le générateur d'index trie les clés d'index collectées qui correspondent à des tuples morts. Cette phase n'existe que pour la création d'index uniques. L'unité de mesure est « clés ».
index de construction : insertion de clés - Le générateur d'index insère des clés d'index dans le nouvel index. L'unité de mesure est « clés ».
validation : index de numérisation - analyse createIndex l'index pour trouver les clés qui doivent être validées. L'unité de mesure est le « bloc ».
validation : tri des tuples - createIndex trie la sortie de la phase de numérisation de l'index.
validation : analyse la collection - createIndex analyse la collection pour valider les clés d'index trouvées lors des deux phases précédentes. L'unité de mesure est le « bloc ».
Exemple de sortie de création d'index
Dans l'exemple de sortie ci-dessous (création d'index de premier plan), l'état de la création de l'index est affiché. Le champ « msg » résume la progression de la construction en indiquant l'étape et le pourcentage d'achèvement de la construction. Le champ « travailleurs » indique le nombre de travailleurs utilisés au cours de cette étape de la construction de l'indice. Le champ « progression » indique les chiffres réels utilisés pour calculer le pourcentage d'achèvement.
Note
Les champs « currentIndexBuild Nom », « msg » et « progression » ne sont pas pris en charge sur Amazon DocumentDB version 4.0.
{
"inprog" : [{
…
"command": {
"createIndexes": "test",
"indexes": [{
"v": 2,
"key": {
"user_name": 1
},
"name": "user_name_1"
}],
"lsid": {
"id": UUID(“094d0fba-8f41-4373-82c3-7c4c7b5ff13b”)
},
"$db": "test"
},
"currentIndexBuildName": user_name_1,
"msg": "Index Build: building index number_1, stage 6/6 building index: 656860/1003520 (keys) 65%",
"workers": 1,
"progress": {
"done": 656861,
"total": 1003520
},
…
],
"ok" : 1
}
Maintenance de l'index Amazon DocumentDB à l'aide reIndex
reIndex
est une commande utilisée pour reconstruire un index. Il est généralement utilisé lorsqu'un index est corrompu ou inefficace. Au fil du temps, les index peuvent accumuler de l'espace inutilisé en raison de nombreuses mises à jour, insertions ou suppressions, ce qui entraîne une dégradation des performances. La réindexation permet de supprimer cet espace inutilisé et de rétablir l'efficacité de l'index.
reIndex
directives
reIndex
n'est pris en charge que sur Amazon DocumentDB 5.0.Amazon DocumentDB prend en charge
reindex
un seul index en arrière-plan, ce qui permet à plusieurs travailleurs de travailler. L'ancien index est utilisable par les requêtes lorsque lereIndex
processus est en cours d'exécution.Amazon DocumentDB prend en charge l'indexation des rapports de progression via.
currentOp
Vous pouvez voir des étapes de création d'index similaires à celles Étapes de création de l'index observées lors de la création de l'index. La seule différence est qu'il comportereIndex
toujours huit étapes, qu'elles soient uniques ou non. Il n'y a pas d'étape « index de construction : tri des clés 2 ».reIndex
peut être exécutée simultanément avec n'importe quelle commande, à l'exception des commandes liées à l'index dans la même collection :createIndexes
,dropIndexes
,collMod
et.renameCollection
reIndex
n'est actuellement pas pris en charge pour les index textuels, géospatiaux, vectoriels et partiels.
reIndex
construire
Utilisez la commande suivante pour reconstruire votre index :
db.runCommand({ reIndex: "
collection-name
", index: "index-name
"})
Facultativement, vous pouvez également contrôler le nombre de travailleurs affectés au processus de reconstruction :
db.runCommand({ reIndex: "
collection-name
", index: "index-name
", workers:number
})