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

Suppressions très lentes de MongoDB

Cela se produit parce que même si

db.repo.remove({"date" : {"$lt" : new Date(1362096000000)}})

ressemble à une seule commande, elle fonctionne en fait sur de nombreux documents - autant de documents qui satisfont cette requête.

Lorsque vous utilisez la réplication, chaque opération de modification doit être écrite dans une collection spéciale dans le local base de données appelée oplog.rs - oplog pour faire court.

L'oplog doit avoir une entrée pour chaque document supprimé et chacune de ces entrées doit être appliquée à l'oplog sur chaque secondaire avant qu'il puisse également supprimer le même enregistrement.

Une chose que je peux suggérer que vous considériez est index TTL - ils supprimeront "automatiquement" les documents en fonction de la date/valeur d'expiration que vous avez définie - de cette façon, vous n'aurez pas une suppression massive et pourrez plutôt répartir davantage la charge dans le temps.