DBAtlas · Атлас эксплуатации баз данных

Мониторинг и прерывание выполняющегося построения индекса

MongoDBОбслуживание

Команда

// 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")

Что делает

Выводит выполняющиеся построения индексов с числом просмотренных документов и процентом выполнения (progress.done / progress.total); при необходимости прерывает построение через dropIndex.

Когда использовать

Чтобы оценить, когда завершится createIndex, запущенный на большой коллекции, или остановить построение, создающее нагрузку в пиковое время.

Внимание

Прерывайте построение индекса через dropIndex/dropIndexes, а не killOp; в наборе реплик выполняйте на primary, чтобы прерывание распространилось на всех участников. Некоторые DDL-операции над коллекцией ждут во время построения. В конце построения берётся кратковременная эксклюзивная блокировка; при очень интенсивной записи этот момент может вызвать задержки.

Открыть в DBAtlas →

Связанные материалы