Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ /

해시 샤드 키 인덱스 제거

이 페이지의 내용

  • 이 작업에 대하여
  • 단계
  • 자세히 알아보기

MongoDB 7.0.3부터 (및 6.0.12 및 5.0.22), 해시 샤드 키에 대한 인덱스를 제거할 수 있습니다.

이렇게 하면 해시 샤드 키로 샤딩된 collection의 데이터 삽입 속도를 높일 수 있습니다. 또한 mongosync 을(를) 사용할 때 데이터 수집 속도를 높일 수 있습니다.

불필요한 인덱스 를 삭제하면 CRUD 작업 속도를 높일 수 있습니다. 각 CRUD 작업은 문서와 관련된 모든 인덱스를 업데이트해야 합니다. 인덱스 하나를 제거하면 모든 CRUD 작업 속도가 빨라질 수 있습니다.

해시 샤드 키 인덱스를 삭제하면 서버는 해당 collection에 대한 밸런싱을 비활성화하고 향후 밸런싱 라운드에서 해당 collection을 제외합니다. 다시 한 번 밸런싱 라운드에 collection을 포함하려면 샤드 키 인덱스를 다시 생성해야 합니다.

중요

샤드 키에 해시되지 않은 인덱스 를 지원하는 경우에만 컬렉션 에서 해시된 샤드 키 해시 샤드 키 인덱스 를 삭제해야 합니다. 지원하는 비해시 인덱스 가 샤드 키 에 존재하지 않는 경우, 샤드 샤드 키 필터링하는 쿼리는 컬렉션 스캔 을 수행합니다. 컬렉션 에 어떤 인덱스가 있는지 확인하려면 db.collection.getIndexes() 를 사용합니다.

1

밸런서를 중지하려면 다음 명령을 실행합니다.

sh.stopBalancer()

mongos 에서 sh.stopBalancer() 만 실행할 수 있습니다. sh.stopBalancer()mongod 에서 실행되면 오류를 생성합니다.

2

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 인지 확인합니다.

3

다음 명령을 실행하여 인덱스를 삭제합니다.

db.collection.dropIndex("<index name>")
4

다음 명령을 실행하여 cluster에서 밸런서를 다시 시작합니다.

sh.startBalancer()

돌아가기

점보 플래그 지우기