샤드 키 문제 해결
이 페이지의 내용
이상적인 샤드 키 를 사용하면 MongoDB 가 클러스터 전체에 문서를 고르게 분산하는 동시에 일반적인 쿼리 패턴을 용이하게 할 수 있습니다. 최적이 아닌 샤드 키 를 사용하면 다음과 같은 문제가 발생할 수 있습니다.
다음에서는 샤드 키의 일반적인 문제와 해결 방법에 대해 자세히 알아볼 수 있습니다.
점보 청크
점보 청크 가 표시되면 샤드 키 의 카디널리티 가 충분하지 않거나 샤드 키 값의 빈도 가 고르지 않게 분산된 것입니다.
샤드 키 의 카디널리티 를 늘리거나 샤드 키 값의 분포를 변경하려면 다음을 수행합니다.
컬렉션을 리샤딩해야 하는지 또는 샤드 키를 세분화해야 하는지 알아보려면 샤드 키 변경을 참조하세요.
샤드 키 값의 분포만 변경하려면 해시 샤딩을 사용하여 데이터를 보다 균등하게 분산하는 것도 고려할 수 있습니다.
샤드 키 선택에 대한 조언을 얻으려면 샤드 키 선택을 참조하세요.
고르지 않은 부하 분산
클러스터에 불균등한 부하 분산이 발생하는 경우 샤드 키가 단조롭게 증가하는지 확인합니다. 단조롭게 증가하는 필드인 샤드 키는 고르지 않은 읽기 및 쓰기 (write) 분포로 이어집니다.
orders
collection 필드에 샤딩된 컬렉션을 가정해 order_id
보겠습니다. order_id
는 차수가 1씩 증가하는 정수입니다.
새 문서는 일반적으로 동일한 샤드와 청크에 작성됩니다. 쓰기를 받는 샤드와 청크를 핫 샤드 및 핫 청크라고 합니다. 핫 샤드는 시간이 지남에 따라 변합니다. 청크가 분할되면 핫 청크가 다른 샤드로 이동하여 데이터 분배를 최적화합니다.
사용자가 모두 같은 샤드에 있는 최근 주문과 상호 작용할 가능성이 높으면 최근 주문이 포함된 샤드가 대부분의 트래픽을 수신하게 됩니다.
단조롭게 증가하는 사드 키가 있는 경우 컬렉션을 다시 샤딩하는 것을 고려합니다. 샤드 키 선택에 대한 조언을 얻으려면 샤드 키 선택을 참조하세요.
데이터 모델에 단조롭게 변경되는 키에 대한 샤딩이 필요한 경우, 해시 샤딩을사용하는 것이 좋습니다.
시간 경과에 따른 쿼리 성능 저하
시간이 지남에 따라 쿼리 성능이 저하되는 경우 클러스터 가 분산 수집 쿼리를 수행하고 있을 수 있습니다.
클러스터 가 분산 수집 쿼리를 수행하고 있는지 평가하려면 가장 일반적인 쿼리에 샤드 키 가 포함되어 있는지 확인합니다.
쿼리에 샤드 키를 포함하는 경우 샤드 키가 해시되어 있는지 확인하세요. 해시된 샤딩을 사용하면 문서가 샤드 키 필드 값의 오름차순 또는 내림차순으로 저장되지 않습니다. 오름차순 또는 내림차순으로 저장되지 않은 데이터에 대해 샤드 키 값에 대한 범위 기반 쿼리를 수행하면 분산 수집 쿼리의 성능이 저하됩니다. 샤드 키에 대한 범위 기반 쿼리가 일반적인 액세스 패턴인 경우 컬렉션을 다시 샤딩하는것을 고려합니다.
가장 일반적인 쿼리에 샤드 키 를 포함하지 않는 경우 컬렉션 을 리샤딩하여 성능을 향상시킬 수 있습니다. 샤드 키 선택에 대한 조언 은 샤드 키 선택을 참조하세요.