J'ai hérité d'un grand serveur MongoDB au travail et j'ai été chargé de comprendre pourquoi les requêtes exécutées contre lui étaient si lentes. La base de données contient des tonnes et des tonnes d'enregistrements (de l'ordre de 10 ^ 9) et occupe environ 300 Gio. Au début, je pensais que le nombre brut d'enregistrements était peut-être le coupable, alors j'ai mis en place des indices sur les champs appropriés. Cela a grandement aidé pour les requêtes qui recherchaient des critères qui se trouvaient dans la base de données, mais cela prendrait de 80 à 90 minutes pour les requêtes où il n'y aurait pas de correspondance. Avez-vous des idées sur la façon de résoudre ce problème?
9
Réponses:
Il semble que vous manquiez un index important, d'autant plus que la requête sans correspondance prend beaucoup plus de temps qu'une requête avec des correspondances. De quel type de requête s'agit-il? Peut-être avez-vous besoin d'un indice composé? Utilisez-vous
where
dans le cadre de la requête?Je ne suis pas un expert en MongoDB, mais 80-90 minutes est absolument anormal. Je ne sais pas à quoi ressemble MongoDB pour Arenstar, mais il a été démontré qu'il gère des milliards de documents (téraoctets de données) .
la source
C'est peut-être trop tard pour une réponse, mais j'ai pensé que cela valait la peine d'être mentionné. Il existe des outils comme mongostat qui peuvent être utilisés pour voir ce qui se passe réellement. Trop d'index manqués, trop de défauts de page. Si vous exécutez des opérations de lecture et d'écriture simultanées, vous devez également rechercher le pourcentage de verrouillage. 300 Go, ce n'est pas énorme pour mongodb. Cela peut facilement aller bien au-delà.
Autres commandes utiles:
la source
Regardez la page MongoDB Database Profiler , en particulier la section sur l' optimisation des performances des requêtes .
la source
MongoDb est à l'échelle du Web .. Désolé de le dire ..
Aucune correspondance ne prendra probablement un certain temps sur la base peut-être d'un balayage de portée ???
Je voudrais le décomposer .. Mongo ne ressemble pas à une base de données pour gérer 300 Go, et n'est probablement pas assez mature pour l'instant pour savoir comment il agit avec de grandes quantités de données ..
Pour quelle raison utilisez-vous Mongo ??
la source