MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Puis-je modifier l'index existant dans MongoDB sans le supprimer ?

Il n'y a aucun moyen de modifier un index comme vous le décrivez, et s'il y en avait, je pense que le résultat en termes de performances serait similaire - comment la base de données utiliserait-elle l'index à moitié créé/modifié pendant que cette opération se déroulait par exemple ?

Au lieu de cela, je recommanderais d'utiliser l'option d'arrière-plan pour créer l'index sur un seul nœud, si telle est votre configuration - cela prendra plus de temps mais n'interférera pas autant avec votre fonctionnement normal. Une fois terminé, vous pouvez supprimer l'ancien index à votre guise.

Cependant , si vous avez un jeu de réplicas (recommandé), vous devez savoir que la création d'index est toujours (actuellement) effectuée au premier plan sur le secondaire. Si vous souhaitez éviter de charger vos secondaires, vous devez suivre les étapes décrites ici pour retirer un membre un à la fois et créer l'index requis avant de rejoindre l'ensemble :

http://docs.mongodb.org/manual/administration/indexes/#index-building-replica-sets

Mettre à jour

Les constructions d'index en arrière-plan sur les secondaires seront possibles à partir de la version 2.6 (voir les notes de version pour plus de détails). Cela ne sera pas rétroporté vers les versions précédentes, donc la note ci-dessus sera vraie pour les versions antérieures à 2.6.

Enfin, en règle générale, les index construits en arrière-plan seront généralement plus volumineux et moins efficaces que ceux construits au premier plan, de sorte que la méthodologie ci-dessus aura toujours son utilité.