DBAtlas · 데이터베이스 운영 아틀라스

미사용 인덱스 찾기 및 삭제 전 숨기기 (hideIndex)

MongoDB성능

명령어

// Usage counter per index (on this member, since the last restart):
db.musteri.aggregate([{ $indexStats: {} }, { $project: { name: 1, ops: "$accesses.ops", since: "$accesses.since" } }, { $sort: { ops: 1 } }])
// Hide it from the planner before dropping (the index keeps being maintained):
db.musteri.hideIndex("idx_email")
// Revert immediately if problems appear:
db.musteri.unhideIndex("idx_email")
// If the observation period passes without issues:
db.musteri.dropIndex("idx_email")

하는 일

$indexStats는 각 인덱스가 몇 번 사용되었는지 보여 준다. hideIndex는 인덱스를 삭제하지 않고 쿼리 플래너에서 숨겨 제거 효과를 되돌릴 수 있는 방식으로 테스트하게 한다.

사용 시점

쓰기 오버헤드와 저장 공간을 늘리는 불필요한 인덱스를 정리할 때.

주의

카운터는 멤버별이며 재시작 시 초기화된다. 읽기가 secondary로 간다면 모든 멤버를 확인하고 충분히 긴 기간(월말 리포트 포함) 동안 관찰한다. ops가 0인 unique 또는 TTL 인덱스도 여전히 필요할 수 있다: unique 제약과 TTL 삭제는 카운터에 나타나지 않는다. hidden 인덱스도 쓰기 시 유지되며, hidden unique 인덱스는 여전히 제약을 강제한다.

DBAtlas에서 열기 →

관련 항목