Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ /

조각난 컬렉션 조각 모음

이 페이지의 내용

  • 시작하기 전에
  • 작업
  • 세부 정보
  • 자세히 알아보기

조각화는 샤딩된 된 컬렉션의 데이터가 불필요하게 많은 수의 작은 청크로 분할되는 경우입니다. 이렇게 하면 해당 컬렉션 에서 실행 되는 CRUD 작업의 작업 시간이 늘어날 수 있습니다. 조각 모음은 작은 청크를 큰 청크로 병합하여 청크 수를 줄여 CRUD 작업 시간을 단축합니다.

CRUD 작업 시간이 허용 가능한 경우 컬렉션을 조각 모음할 필요가 없습니다.

다음 표에는 다양한 MongoDB 버전에 대한 조각 모음 정보가 요약되어 있습니다.

MongoDB 버전
설명

MongoDB 7.0 이상

청크는 자동으로 병합됩니다. MongoDB 7.0 에서 컬렉션 조각 모음으로 인한 성능 향상은 MongoDB 6.0 에 비해 낮습니다. 일반적으로 MongoDB 7.0 부터 컬렉션을 조각 모음할 필요가 없습니다.

MongoDB 6.0 및 7.0이전 버전

밸런서가 청크를 마이그레이션하거나 노드가 시작될 때 CRUD 작업 지연이 발생하는 경우에만 컬렉션을 조각 모음합니다.

MongoDB 6.0부터는 쓰기 트래픽이 많아도 조각화가 발생하지 않습니다. 청크 마이그레이션은 조각화를 유발합니다.

MongoDB 6.0 이전 버전

조각 모음은 메타데이터 업데이트 중 CRUD 작업 시간이 길어지는 경우에만 사용할 수 있습니다. 6.0 이전 버전의 MongoDB의 경우 많은 삽입 또는 업데이트 작업으로 인해 컬렉션 크기가 크게 증가하면 샤딩된 컬렉션이 조각화됩니다.

샤딩된 컬렉션 을 조각 모음하려면 configureCollectionBalancing 명령의 defragmentCollection 옵션을 사용합니다. 이 옵션은 MongoDB 6.0 부터 사용할 수 있습니다.

collection을 조각 모음하기 전에 다음 문제를 고려하세요.

  • 조각 모음으로 인해 샤드에 대한 많은 메타데이터 업데이트가 발생할 수 있습니다. 마이그레이션 중에 CRUD 작업이 이미 평소보다 오래 걸리는 경우, 샤드 밸런싱 기간 동안에만 조각 모음을 실행하여 시스템 워크로드를 줄여야 합니다.

  • 조각 모음이 cluster의 workload 및 CRUD latency에 영향을 미치는 경우 chunkDefragmentationThrottlingMS 매개 변수를 사용하여 영향을 줄일 수 있습니다.

  • 병합된 청크는 배치 기록이 손실됩니다.

    • 즉, 조각 모음이 실행되는 동안 오래된 청크 기록 오류로 인해 스냅샷 읽기 및 간접적인 트랜잭션이 실패할 수 있습니다.

    • 배치 내역에는 청크가 저장된 샤드가 기록됩니다. 조각 모음은 배치 기록을 지우며 일부 작업이 실패할 수 있지만 일반적으로 약 5분 후에 해결됩니다.

  • 조각 모음은 샤드 간에 데이터를 이동하여 collection에 있는 문서의 지역성에 영향을 줍니다. collection에 자주 액세스하는 데이터 범위가 있는 경우, collection 조각 모음 후 자주 액세스하는 데이터가 하나의 샤드에 있을 수 있습니다. 이렇게 하면 워크로드를 여러 샤드 대신 하나의 샤드에 배치하여 CRUD 작업의 성능이 저하될 수 있습니다.

참고

일반적으로 샤드 밸런싱 창 을 사용하여 조각 모음을 수동으로 시작하고 중지하는 대신 밸런서가 실행되는 시기를 지정해야 합니다.

이 섹션에서는 샤드 collection 조각 모음과 관련된 추가 세부 정보를 설명합니다.

configureCollectionBalancing 명령이 반환하는 defragmentCollection 필드는 조각 모음이 실행 중인 경우에만 true 입니다.

조각 모음이 자동으로 종료되거나 수동으로 중지하면 반환된 문서에서 defragmentCollection 필드가 제거됩니다.

세컨더리 노드 읽기는 조각 모음 중에 허용되지만 프라이머리 노드의 메타데이터 업데이트가 세컨더리 노드에 복제될 때까지 완료하는 데 시간이 더 걸릴 수 있습니다.

MongoDB 밸런서에 대한 자세한 내용은 cluster 밸런서를 참조하세요.

chunkSize에 대한 소개는 샤딩된 클러스터에서 범위 크기 수정을 참조하세요.

다음 표는 chunkSize가 다양한 MongoDB 버전에서 조각 모음 및 밸런서 작업에 미치는 영향을 설명합니다.

MongoDB 버전
설명

MongoDB 6.0 이상

두 샤드 간에 공유되는 컬렉션 데이터가 구성된 chunkSize 설정보다 3배 이상 다른 경우 밸런서는 샤드 간에 청크를 마이그레이션합니다.

예를 들어 chunkSize 값이 128MB이고 컬렉션 데이터의 차이가 384MB 이상인 경우 밸런서는 샤드 간에 청크를 마이그레이션합니다.

MongoDB 6.0 이전 버전

청크가 chunkSize보다 커지면 청크가 분할됩니다.

청크가 이동, 분할 또는 병합되면 구성 서버에서 청크 작업이 커밋된 후 샤드 메타데이터가 업데이트됩니다. 청크 작업과 관련되지 않은 샤드도 새로운 메타데이터로 업데이트됩니다.

샤드 메타데이터 업데이트 시간은 라우팅 테이블의 크기에 비례합니다. 샤드 메타데이터가 업데이트되는 동안 컬렉션에 대한 CRUD 작업이 일시적으로 차단되며, 라우팅 테이블이 작을수록 CRUD 작업 지연이 더 짧아집니다.

컬렉션 조각 모음을 수행하면 청크 수와 청크 메타데이터 업데이트 시간이 줄어듭니다.

시스템 작업 부하를 줄이려면 샤드 밸런싱 창을 사용하여 특정 시간에만 밸런서가 실행되도록 구성하세요. 조각 모음은 밸런싱 기간 동안 실행됩니다.

2}chunkDefragmentationThrottlingMS 매개변수를 사용하여 밸런서에서 실행되는 분할 및 병합 명령의 속도를 제한할 수 있습니다.

조각 모음을 언제든지 시작하고 중지할 수 있습니다.

샤드 존을 설정할 수도 있습니다. 샤드 영역은 샤드 키를 기반으로 하며, 각 영역을 클러스터에 있는 하나 이상의 샤드와 연결할 수 있습니다.

MongoDB 6.0부터 샤딩된 클러스터는 청크를 마이그레이션해야 하는 경우에만 청크를 분할합니다. 이는 청크 크기가 chunkSize를 초과할 수 있음을 의미합니다. 청크가 클수록 샤드의 청크 수가 줄어들고 샤드 메타데이터를 업데이트하는 데 걸리는 시간이 줄어들기 때문에 성능이 향상됩니다. 예를 들어 chunkSize를 256MB로 설정했는데도 샤드에 1TB 청크가 표시될 수 있습니다.

chunkSize 는 다음에 영향을 줍니다.

  • 단일 청크 마이그레이션 작업에서 밸런서가 두 샤드 간에 마이그레이션을 시도하는 최대 데이터 양입니다.

  • 조각 모음 중에 마이그레이션된 데이터의 양입니다.

  • 샤딩 소개, 샤딩참조

  • 청크로 데이터 분할, 청크를 사용한 데이터 분할참조

  • 컬렉션 밸런싱 구성, 참조 configureCollectionBalancing

  • 밸런서 collection 상태 검사, 다음을 참조하세요. balancerCollectionStatus

  • 샤드 밸런싱 Windows을 구성 합니다(밸런싱 기간 예약참조).

  • MongoDB Atlas를 사용하여 샤드를 모니터링하려면 샤드클러스터 검토를 참조하세요.

돌아가기

Config Database