DBAtlas · 데이터베이스 운영 아틀라스

257 TransactionTooLarge: TransactionTooLarge

MongoDB

의미

multi-document 트랜잭션이 허용 크기/작업 수 한도를 초과했다. 트랜잭션에 누적된 변경(oplog 항목 또는 메모리 사용량)이 상한을 넘어 트랜잭션이 거부되었다.

원인

단일 트랜잭션에서 많은 문서를 수정/삽입해 트랜잭션이 생성한 전체 데이터가 너무 커졌다(예: WiredTiger 캐시에 유지해야 하는 변경량, 또는 transactionLimitBytes 같은 서버 한도). 4.2부터 트랜잭션을 여러 oplog 항목으로 나눌 수 있으므로 16 MB oplog 항목 한도만으로 결정되지는 않는다. 대량 데이터 마이그레이션/ETL에 트랜잭션을 사용하면 이 한도에 쉽게 도달한다.

해결 방법

트랜잭션을 더 작은 단위로 나누고 배치마다 별도 트랜잭션으로 커밋한다. multi-document 트랜잭션은 짧고 작게 설계되었으므로, 대량 갱신은 트랜잭션 없이(멱등하게, 청크 단위로) 수행하거나 bulk write로 분할하는 것이 바람직하다. 단일 트랜잭션에서 수천 개의 문서를 수정하지 않는다.

DBAtlas에서 열기 →

같은 데이터베이스의 다른 항목