용량에도 불구하고 핫 파티션에서 DynamoDB가 조절되었습니다.
TL;DR — 테이블에는 전체적으로 사용되지 않은 RCU/WCU가 많지만 단일 파티션 키가 핫하기 때문에 여전히 제한되어 있습니다. 모든 물리적 파티션은 테이블의 용량에 관계없이 초당 최대 3,000개의 읽기 단위와 1,000개의 쓰기 단위를 제공하도록 설계되었습니다. 하나의 키에 쌓인 트래픽은 해당 파티션 하나를 소모합니다. 문제를 해결하려면 더 별개의 파티션 키(쓰기-샤딩)에 요청을 분산하세요.
무엇을 의미하는가
ProvisionedThroughputExceededException: You exceeded your maximum allowed
provisioned throughput for a table or for one or more global secondary indexes.
# ...yet CloudWatch shows consumed capacity well below provisioned.DynamoDB는 여러 물리적 파티션에 테이블을 분산시키며, 테이블 용량은 파티션 간에 나누어집니다. 개별 파티션은 두 용량 모드 모두에서 초당 최대 3,000개의 읽기 단위와 1,000개의 쓰기 단위를 제공하도록 설계되었습니다. 액세스 패턴이 하나의 파티션 키에 트래픽을 집중시키는 경우, 테이블 전체 지표가 충분히 활용되지 않은 것처럼 보이더라도 해당 키의 파티션은 자체 한도에 도달하고 조절됩니다(오류의 ThrottlingReason 필드(예: TableReadKeyRangeThroughputExceeded)는 도달한 정확한 한도를 나타냅니다. 적응형 용량은 도움이 되지만 실제로 불균형한 키를 구제할 수는 없습니다.
왜 발생하는가
- 낮은 카디널리티 파티션 키 — 상태 플래그, 부울, "현재 날짜" 또는 대부분의 트래픽을 수신하는 단일 테넌트입니다.
- 바이럴/유명인 아이템 — 하나의 인기 있는 파티션 키(트렌딩 제품, 인기 사용자)가 불균형한 로드를 끌어옵니다.
- "오늘" 키가 있는 시계열 — 모든 쓰기는 동일한 날짜 기반 파티션 키에 저장됩니다.
- 순차 또는 단조 키이므로 최신 파티션에 클러스터를 씁니다.
- 기본 테이블의 쓰기를 제한하는 낮은 카디널리티 파티션 키가 있는 GSI입니다.
어떻게 해결하는가
- 키 카디널리티를 높입니다. 요청이 여러 값에 분산되도록 파티션 키를 설계합니다. 이것이 가장 효과적인 단일 수정 사항입니다.
- 단축키 쓰기-분할. 하나의 논리적 엔터티가 여러 파티션에 걸쳐 있도록 접미사(
USER#42#1…USER#42#N)를 추가합니다. 팬 아웃은 샤드 전체에서 읽습니다. - "오늘의" 쓰기가 모두 충돌하지 않도록 시계열 키에 임의성 또는 계산된 접미사를 추가합니다.
- 캐시 핫 읽기(DAX 또는 애플리케이션 캐시)를 사용하여 핫 파티션의 읽기 부담을 줄여줍니다.
- 지수 백오프 재시도 유지 — 이 오류는 재시도 가능하며 SDK는 기본적으로 백오프합니다.
- 카디널리티가 낮은 GSI 키 수정 — a throttled GSI throttles the base table.
- 오류에서
ThrottlingReason를 확인하세요. 한도가 테이블 전체인지 아니면 특정 키 범위인지 여부를 나타냅니다.
DynoTable에서 크기 확인
핫 파티션 키 찾기 — ⌘K로 테이블을 열고 파티션 키별로 정렬한 후 이웃보다 훨씬 더 많은 항목을 담고 있는 키 하나를 찾습니다. 다시 샤딩하기 전에 해당 키로 필터링하고 쓰기 패턴을 검사하세요.
Query Builder의 쓰기-샤드 접미사를 모델링하고 pricing calculator로 재시도 트래픽을 추정합니다. ⌘P로 프로필을 전환합니다. Connect to AWS 및 Install를 참조하세요.
출처
- Best practices for designing partition keys (2026-07-13 인증)
- Troubleshooting throttling in Amazon DynamoDB (2026-07-13 인증)
FAQ
테이블에 여유 용량이 있는데 DynamoDB가 제한하는 이유는 무엇입니까? 단일 파티션 키가 핫하기 때문입니다. 모든 물리적 파티션에는 테이블 수준 용량에 관계없이 초당 약 3,000개의 읽기 단위와 1,000개의 쓰기 단위가 있으므로 하나의 키에 쌓인 트래픽은 해당 파티션 하나를 소모하는 반면 테이블 전체 메트릭은 활용도가 낮은 것으로 보입니다.
DynamoDB에서 핫 파티션을 수정하려면 어떻게 해야 합니까? 요청이 여러 값에 분산되도록 파티션 키 카디널리티를 늘리고, 접미사를 사용하여 핫 키를 쓰기 분할하고, 시계열 키에 계산된 접미사를 추가하고, 핫 읽기를 캐시합니다. 지수 백오프 재시도는 짧은 급증을 극복하는 데 도움이 되지만 불균형 키를 수정하지는 않습니다.
관련 오류
- ProvisionedThroughputExceededException — 일반적인 조절 오류 및 용량 수정.
- ThrottlingException — 계정/제어 영역 비율 제한.
- 학습: Hot partitions · How partition keys work
참고 자료
- Best practices for designing and using partition keys effectively in DynamoDB — Amazon DynamoDB Developer Guide
- Using write sharding to distribute workloads evenly in your DynamoDB table — Amazon DynamoDB Developer Guide
- Troubleshooting throttling in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
위에 링크된 공식 AWS 문서를 기준으로 2026년 7월 13일에 마지막으로 확인되었습니다.