Laufenden Index-Build überwachen und abbrechen
MongoDBWartungBefehl
// Index builds in progress and their completion percentage:
db.getSiblingDB("admin").aggregate([
{ $currentOp: { allUsers: true } },
{ $match: { $or: [{ "command.createIndexes": { $exists: true } }, { desc: /^IndexBuildsCoordinator/ }] } },
{ $project: { opid: 1, desc: 1, ns: 1, secs_running: 1, msg: 1, progress: 1, "command.indexes.name": 1 } }
])
// Abort the build (on the primary; in a replica set it stops on all members):
db.musteri.dropIndex("idx_email")Was es tut
Listet laufende Index-Builds mit der Anzahl gescannter Dokumente und dem prozentualen Fortschritt (progress.done / progress.total); bricht den Build bei Bedarf mit dropIndex ab.
Wann einsetzen
Um abzuschätzen, wann ein auf einer großen Collection gestartetes createIndex fertig wird, oder um einen Build zu stoppen, der zur Spitzenzeit Last erzeugt.
Vorsicht
Einen Index-Build mit dropIndex/dropIndexes abbrechen, nicht mit killOp; in einem Replica Set auf dem Primary ausführen, damit sich der Abbruch auf alle Mitglieder überträgt. Manche DDL-Operationen auf der Collection warten während des Builds. Am Ende des Builds wird kurz eine exklusive Sperre genommen; bei sehr hoher Schreiblast kann dieser Moment Latenz verursachen.