2009-11-19 8 views
2

je la configuration suivante:MongoDB prend beaucoup de temps pour l'indexation

  • Mac Pro avec 2 Go de RAM (oui, pas tant que ça)
  • MongoDB 1.1.3 64 bits
  • 8 millions d'entrées en une seule collection
  • index
  • pour un champ (entier) voulait

appel .ensureIndex(...) prend plus d'une heure, en fait je tuais le processus après cette. J'ai l'impression que cela prend beaucoup trop de temps. En outre, j'ai terminé le processus, mais l'indice peut être vu avec .getIndexes() après.

Quelqu'un sait ce qui ne va pas ici?

Répondre

2

L'ajout d'un index sur un ensemble de données existant devrait prendre un certain temps, car tout le BTree doit être construit. Si vous pensez que cela prend un temps déraisonnable, ou que vous avez vu une régression dans la performance, le mieux est de demander à ce sujet sur the list.

0

Je voudrais juste signaler la commande:

db.currentOp() 

qui imprime les opérations en cours en cours d'exécution sur le serveur, et montre également le processus d'indexation.

L'indexation en avant-plan se fait en 3 étapes, et l'arrière-plan en deux étapes (si je me souviens bien), mais l'arrière-plan est beaucoup plus lent. Le premier plan bloque la collection tout en l'indexant (c'est-à-dire pas très utile sur un serveur d'applications en cours d'exécution).

Comme déjà dit, google BTree si vous êtes intéressé par leur fonctionnement.

Quelqu'un sait ce qui ne va pas ici? Courez-vous via ssh ou vous connectez à distance d'une manière ou d'une autre?

Sonne un peu comme un problème de tuyau cassé. Avez-vous créé l'index avec {background: true} ou non?

Questions connexes