MySQL 대량 DML이 위험한 이유 — Binary Log와 Undo Log 관점
들어가며 이전 글에서 상품 서비스가 RC를 채택한 이유를 다뤘다. 대량 재고를 청크 단위로 나눠서 병렬 처리한다는 이야기도 했다. 그런데 왜 굳이 청크로 나눠야 할까? 한 번에 100만 건을 UPDATE하면 안 되는 걸까? 이 질문에 답하려면 MySQL이 데이터를 변경할 때 내부에서 어떤 일이 일어나는지 알아야 한다. 핵심은 두 가지 로그다. ...
들어가며 이전 글에서 상품 서비스가 RC를 채택한 이유를 다뤘다. 대량 재고를 청크 단위로 나눠서 병렬 처리한다는 이야기도 했다. 그런데 왜 굳이 청크로 나눠야 할까? 한 번에 100만 건을 UPDATE하면 안 되는 걸까? 이 질문에 답하려면 MySQL이 데이터를 변경할 때 내부에서 어떤 일이 일어나는지 알아야 한다. 핵심은 두 가지 로그다. ...
배경 MySQL InnoDB의 기본 격리수준은 REPEATABLE READ(RR)이다. 하지만 상품 서비스는 READ COMMITTED(RC)를 사용한다. # HikariCP 커넥션 초기화 시 RC 설정 spring: datasource: connection-init-sql: SET SESSION TRANSACTION ISOLATION ...