aggregate에서 $indexStats를 이용
// 기본사용법
[direct: mongos] DB_NAME> db.COL_NAME.aggregate([{$indexStats:{}}])
[
{
// 인덱스 이름
name: 'k1_1_k2_1',
// 인덱스를 이루는 키
key: { k1: 1, k2: 1 },
// host
host: 'HOSTNAME:PORT',
// 인덱스 사용통계. 여기가 핵심.
// ops는 인덱스를 사용한 operation 숫자이고,
// since는 MongoDB가 통계를 모으기 시작한 일시
accesses: { ops: Long("9211"), since: ISODate("2023-05-18T00:43:00.062Z") },
// 샤드
shard: 'SHARD_NAME',
// 인덱스 스펙
spec: {
v: 2,
key: { k1: 1, k2: 1 },
name: 'k1_1_k2_1',
background: true
}
},
{
name: '_id_',
key: { _id: 1 },
host: 'HOSTNAME:PORT',
accesses: { ops: Long("10321"), since: ISODate("2023-05-18T00:43:00.062Z") },
shard: 'SHARD_NAME',
spec: { v: 2, key: { _id: 1 }, name: '_id_' }
}
]
// 그래서 꼭 필요한 것들만 보고 싶으면 아래처럼 $project 지정
[direct: mongos] DB_NAME> db.COL_NAME.aggregate([
{$indexStats:{}},
{$project:{name:1, accesses:1}}
])
[
{
name: 'k1_1_k2_1',
accesses: { ops: Long("9544"), since: ISODate("2023-05-18T00:43:00.062Z") }
},
{
name: '_id_',
accesses: { ops: Long("10688"), since: ISODate("2023-05-18T00:43:00.062Z") }
}
]
ops 숫자가 작다면 해당 인덱스 사용이 적다는 뜻이고, 해당 인덱스를 없앨지 말지 고민할 필요가 있다는 뜻이 됨.
[참고]
https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexStats/