대량 데이터 배치 INSERT 리팩토링 — subList 활용회사에서 알림 발송 기능 코드를 보는데, 수신자 목록을 500건씩 쪼개서 배치 INSERT하는 부분이 있었다. 수신자가 수천~수만 명, 혹은 그 이상 까지 될 수 있어서 한 번에 넣으면 DB 부하가 커지기 때문인데, 쪼개는 로직 자체가 불필요하게 복잡해서 리팩토링해보았다. 왜 쪼개서 INSERT 하는가?!그 전에 먼저 왜 한 번에 INSERT하면 안 되는지 짚고 넘어가자! MySQL에는 max_allowed_packet이라는 설정이 있다. 한 번에 DB로 보낼 수 있는 패킷(쿼리)의 최대 크기를 제한하는 값인데, 보통 4MB~64MB로 설정되어 있다. MyBatis의 로 멀티 row INSERT를 하면 데이터가 많을수록 쿼리 문자열 자체가 길어..