MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB löscht sehr langsam

Dies geschieht, weil obwohl

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

sieht aus wie ein einziger Befehl, der tatsächlich auf viele Dokumente angewendet wird - so viele, wie diese Abfrage erfüllt.

Wenn Sie die Replikation verwenden, muss jede Änderungsoperation in eine spezielle Sammlung im local geschrieben werden Datenbank namens oplog.rs - kurz oplog.

Das Oplog muss einen Eintrag für jedes gelöschte Dokument haben und jeder dieser Einträge muss auf das Oplog auf jedem sekundären Dokument angewendet werden, bevor es denselben Datensatz löschen kann.

Eine Sache, die ich Ihnen vorschlagen kann, sind TTL-Indizes - Sie löschen Dokumente "automatisch" basierend auf dem von Ihnen festgelegten Ablaufdatum/Wert - auf diese Weise müssen Sie keine massive Löschung vornehmen und können stattdessen die Last über die Zeit verteilen.