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.
Création d'index
La création d'index dans Amazon DocumentDB nécessite de prendre un certain nombre de décisions :
En combien de temps doit-il être terminé ?
La collection peut-elle être inaccessible pendant la construction ?
Quelle part de la 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 des exemples de surveillance permettant de créer un index Amazon DocumentDB sur votre collection de clusters basée sur des instances.
Consignes
Les directives suivantes incluent des limites de base et des compromis de configuration lors de la création de nouveaux index :
Prise en charge des versions d'Amazon DocumentDB - Alors que l'indexation d'un seul travailleur est prise en charge sur toutes les versions d'Amazon DocumentDB, l'indexation de 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 d'index augmente l'utilisation du processeur et permet de lire les E/S 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.
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 bases de données. Cela représente la moitié du nombre total de vCPU sur l'instance principale de votre cluster de base de données. Par exemple, vous pouvez exécuter un maximum de 32 workers sur une instance db.r6g.16xlarge dotée de 64 processeurs virtuels.
Note
La création d'index en parallèle est prise en charge sur les instances 2xlarge et supé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 les clusters basés sur des instances est deux workers. Cependant, vous pouvez réduire le nombre de travailleurs à un en utilisant l'option « fils 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é des vCPU de l'instance principale de votre cluster de bases de données peuvent être utilisées pour les travailleurs configurés effectuant la création d'index sur plusieurs collections.
Types d'index : consultez Types d’indexation la liste des types d'index pris en charge sur Amazon DocumentDB.
Types de création d'index
Les quatre types de construction d'indices sont les suivants :
Premier plan : le build de l'index de premier plan bloque toutes les autres opérations de base de données sur la collection sur laquelle l'index est créé, jusqu'à ce que la création de l'index soit terminée. La création de premier plan d'Amazon DocumentDB comprend cinq étapes.
Premier plan (unique) : les constructions d'index de premier plan d'un seul document (unique) bloquent d'autres opérations de base de données, comme les constructions de premier plan classiques. Contrairement à la construction de base au premier plan, la construction unique utilise une étape supplémentaire (touches de tri 2) pour rechercher les clés dupliquées. La construction de premier plan (unique) comprend six étapes.
Arrière-plan : la création de l'index en arrière-plan permet d'exécuter d'autres opérations de base de données au premier plan pendant la création de l'index. La création en arrière-plan d'Amazon DocumentDB comprend huit étapes.
Arrière-plan (unique) : les constructions d'index d'arrière-plan d'un 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 (clés de tri 2) pour rechercher les clés dupliquées. La construction d'arrière-plan (unique) comprend neuf étapes.
Le type de création d'index par défaut est premier plan.
Pour créer un index en arrière-plan, vous ajoutez le paramètre « background » : true lors de la création de l'index.
Prise en main
Pour démarrer la création d'index sur une collection, utilisez la commande CreateIndexes. Par défaut, la commande exécute deux programmes de travail 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 » d'un document et augmenter la vitesse du processus d'indexation à quatre opérateurs :
Créez des index en arrière-plan à l'aide de deux outils de travail parallèles sur le cluster :
db.runCommand({"createIndexes":"test","indexes":[{"key": {"user_name":1}, "name":"username_idx", "background":true }]})Pour optimiser la vitesse du processus de création d'index, vous pouvez spécifier le nombre de travailleurs à l'aide de l'option « worker threads » (« workers » :<number>) de la commande DB.RunCommand CreateIndexes.
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. Cependant, plus le nombre de travailleurs augmente, plus la charge sur les vCPU et les E/S de lecture de votre instance principale augmentent. Assurez-vous que votre cluster est suffisamment provisionné pour faire face à cette 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 à l'aide 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 scanné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 commande DB.CurrentOp () dans le shell Mongo. Une réalisation à 100 % de la dernière étape indique que tous les index ont été créés avec succès :
db.currentOp({"command.createIndexes": { $exists : true } })
Note
L'affichage de l'état de progression de l'indexation n'est possible que sur Amazon DocumentDB 5.0.
Étapes de création de l'indice
| Étape | Au premier plan | Premier plan (unique) | Contexte | Contexte (unique) |
|---|---|---|---|---|
| Initialisation | 1 | 1 | 1 | 1 |
| index de construction : initialisation | 2 | 2 | 2 | 2 |
| index du bâtiment : 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 : touches de tri 2 | 5 | 5 | ||
| index du bâtiment : 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 |
initialization - CreateIndex prépare le générateur d'index. Cette phase devrait être très brève.
index de bâtiment : initialisation - Le générateur d'index se prépare à créer l'index. Cette phase devrait être très brève.
index du bâtiment : analyse de la collection - Le générateur d'index effectue une analyse de la collection pour collecter les clés d'index. L'unité de mesure est le « bloc ».
Note
Si plusieurs travailleurs sont configurés pour la création de l'index, celui-ci est affiché à ce stade. L'étape de « collecte par numérisation » est la seule étape qui utilise plusieurs travailleurs pendant le processus de création de l'index. Toutes les autres étapes n'afficheront qu'un seul travailleur.
index de bâtiment : clés de tri 1 - Le générateur d'index trie les clés d'index collectées. L'unité de mesure est « clés ».
index de bâtiment : 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'un index unique. L'unité de mesure est « clés ».
index de bâtiment : 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 - CreateIndex analyse 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 le résultat de la phase d'analyse de l'index.
validation : analyse de 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 génération d'index
Dans l'exemple de sortie suivant (création de l'index au 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 création de l'indice. Le champ « Progression » indique les chiffres réels utilisés pour calculer le pourcentage d'achèvement.
Note
Les champs IndexBuildName « current », « msg » et « progress » 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 }
Ressources de dépannage
Consultez les ressources suivantes pour résoudre les problèmes liés à la création d'index :