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

1197: Multi-statement transaction required more than 'max_binlog_cache_size' (다중 문장 트랜잭션이 'max_binlog_cache_size'보다 많은 공간을 요구함)

MySQL

의미

단일 트랜잭션이 생성한 binlog 데이터가 max_binlog_cache_size로 정의된 메모리/캐시 한도를 초과했다. 트랜잭션이 binary log에 들어가지 않아 실패하고 롤백되었다.

원인

매우 큰 트랜잭션(수백만 행의 단일 INSERT/UPDATE/DELETE 또는 거대한 bulk load)이 binlog 캐시를 채웠다. binary logging이 활성화된 경우(복제/시점 복구) 큰 트랜잭션은 이 한도를 쉽게 초과할 수 있다.

해결 방법

큰 트랜잭션을 작은 배치로 나누고 배치마다 COMMIT한다. 정말 큰 트랜잭션을 피할 수 없다면 max_binlog_cache_size(필요하면 binlog_cache_size도)를 늘린다. ETL/bulk load에서는 중간 COMMIT을 포함한 분할 로드로 이 오류와 장시간 락 보유를 모두 방지한다.

DBAtlas에서 열기 →

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