다음을 통해 공유


Azure Cosmos DB 충돌 예외 진단 및 문제 해결

적용 대상: NoSQL

HTTP 상태 코드 409는 처리하는 동안 요청이 충돌했다는 것을 나타냅니다.

파티션 키 충돌

Azure Cosmos DB는 해시 기반 분할 구성표를 사용하여 데이터의 수평 확장을 구현합니다. 2019년 5월 3일 이전에 만든 모든 Azure Cosmos DB 컨테이너는 파티션 키의 처음 101바이트를 기반으로 해시를 계산하는 해시 함수를 사용합니다. 처음 101바이트와 동일한 파티션 키가 여러 개 있는 경우 이러한 논리 파티션은 서비스에서 동일한 논리 파티션으로 간주되어 파티션 키 충돌이 발생합니다. 이로 인해 파티션 키 충돌, 파티션 크기 할당량이 잘못됨, 파티션 키에서 고유 인덱스가 잘못 적용되고 스토리지가 고르지 않게 분산되는 등의 문제가 발생할 수 있습니다. 사용자는 문서 생성 시 409 응답 코드가 있는 "ID가 있는 리소스가 이미 충돌하는 해시된 파티션 키로 존재합니다. 다른 파티션 키로 다시 시도하세요"라는 오류가 표시될 수 있습니다. 이 문제를 해결하기 위해 큰 파티션 키가 도입되었습니다. 이제 Azure Cosmos DB는 최대 2KB의 값이 있는 큰 파티션 키를 지원합니다.

큰 파티션 키는 최대 2KB의 큰 파티션 키에서 고유한 해시를 생성할 수 있는 향상된 버전의 해시 함수를 사용하도록 설정하여 지원됩니다.

해결 방법

큰 파티션 키를 사용합니다. 큰 파티션 키를 사용하도록 설정하는 작업은 컨테이너를 만들 때만 수행할 수 있습니다. 큰 파티션 키를 사용하지 않는 기존 컨테이너가 있는 경우 새 컨테이너를 만들고 데이터를 마이그레이션해야 합니다 .