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가 언제 끝날지 추정하거나, 피크 시간에 부하를 만드는 빌드를 중지하기 위해.

주의

인덱스 빌드는 killOp가 아니라 dropIndex/dropIndexes로 중단한다. replica set에서는 primary에서 실행해야 중단이 모든 멤버로 전파된다. 빌드 중에는 컬렉션의 일부 DDL 작업이 대기한다. 빌드 끝에 짧은 배타 락이 잡히며, 쓰기가 매우 많으면 그 순간 지연이 생길 수 있다.

DBAtlas에서 열기 →

관련 항목