미사용 인덱스 찾기 및 삭제 전 숨기기 (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 인덱스는 여전히 제약을 강제한다.