해시 샤드 키 인덱스 제거
MongoDB 7.0.3부터 (및 6.0.12 및 5.0.22), 해시 샤드 키에 대한 인덱스를 제거할 수 있습니다.
이렇게 하면 해시 샤드 키로 샤딩된 collection의 데이터 삽입 속도를 높일 수 있습니다. 또한 mongosync
을(를) 사용할 때 데이터 수집 속도를 높일 수 있습니다.
이 작업에 대하여
불필요한 인덱스 를 삭제하면 CRUD 작업 속도를 높일 수 있습니다. 각 CRUD 작업은 문서와 관련된 모든 인덱스를 업데이트해야 합니다. 인덱스 하나를 제거하면 모든 CRUD 작업 속도가 빨라질 수 있습니다.
해시 샤드 키 인덱스를 삭제하면 서버는 해당 collection에 대한 밸런싱을 비활성화하고 향후 밸런싱 라운드에서 해당 collection을 제외합니다. 다시 한 번 밸런싱 라운드에 collection을 포함하려면 샤드 키 인덱스를 다시 생성해야 합니다.
중요
샤드 키에 해시되지 않은 인덱스 를 지원하는 경우에만 컬렉션 에서 해시된 샤드 키 해시 샤드 키 인덱스 를 삭제해야 합니다. 지원하는 비해시 인덱스 가 샤드 키 에 존재하지 않는 경우, 샤드 샤드 키 필터링하는 쿼리는 컬렉션 스캔 을 수행합니다. 컬렉션 에 어떤 인덱스가 있는지 확인하려면 db.collection.getIndexes()
를 사용합니다.
단계
collection에 고아 문서가 없는지 확인
MongoDB 6.0.3부터는 $shardedDataDistribution
단계를 사용하여 애그리게이션을 실행하여 고아 문서가 남아 있지 않은지 확인할 수 있습니다.
db.aggregate([ { $shardedDataDistribution: {} }, { $match: { "ns": "<database>.<collection>" } } ])
$shardedDataDistribution
은 다음과 유사한 출력을 갖습니다.
[ { "ns": "test.names", "shards": [ { "shardName": "shard-1", "numOrphanedDocs": 0, "numOwnedDocuments": 6, "ownedSizeBytes": 366, "orphanedSizeBytes": 0 }, { "shardName": "shard-2", "numOrphanedDocs": 0, "numOwnedDocuments": 6, "ownedSizeBytes": 366, "orphanedSizeBytes": 0 } ] } ]
클러스터의 각 샤드에 대해 "numOrphanedDocs"
가 0
인지 확인합니다.