MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Exclusões muito lentas do MongoDB


Isso está acontecendo porque, embora
db.repo.remove({"date" : {"$lt" : new Date(1362096000000)}})

parece que um único comando está realmente operando em muitos documentos - tantos quantos satisfaçam essa consulta.

Quando você usa a replicação, cada operação de alteração deve ser gravada em uma coleção especial no local banco de dados chamado oplog.rs - oplog para breve.

O oplog deve ter uma entrada para cada documento excluído e cada uma dessas entradas precisa ser aplicada ao oplog em cada secundário antes que ele também possa excluir o mesmo registro.

Uma coisa que posso sugerir que você considere é índices TTL - eles excluirão documentos "automaticamente" com base na data/valor de expiração que você definir - dessa forma, você não terá uma exclusão massiva e, em vez disso, poderá distribuir a carga mais ao longo do tempo.