DBAtlas · Atlas für Datenbankbetrieb

Laufenden Index-Build überwachen und abbrechen

MongoDBWartung

Befehl

// 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.

In DBAtlas öffnen →

Verwandte Einträge