SQL Insert와 Bulk Insert의 차이

항목 단일 Insert Bulk Insert
💡 목적 1건씩 개별 삽입 여러 건을 한 번에 삽입
⚙️ SQL 실행 횟수 N번 (INSERT N회) 1번 (INSERT ... VALUES (...), (...), ...)
⚡️ 성능 느림 (네트워크/DB 오버헤드 큼) 빠름 (쿼리 1회, DB 최적화 활용 가능)
✅ 트랜잭션 내 사용 가능 가능 (실제로 더 적합)
🧠 ORM 예 save()를 N번 호출 insert().values([...])
🔁 중복 처리 try/catch 등 수동 대응 .orIgnore() 또는 ON CONFLICT DO NOTHING 사용 가능

Bulk Insert의 단점

  1. 트랜잭션 관리의 복잡성
    • 한번에 많은 양의 한 번에 많은 행을 삽입하기 때문에, 하나의 트랜잭션이 매우 커질 수 있다. 트랜잭션이 커지면 롤백 시 리소스 소모가 커지고, 데이터베이스가 큰 부하를 받을 수 있다. 만약 삽입 도중 오류가 발생하면 많은 데이터를 롤백해야 하는 상황이 발생할 수 있다.
  2. 데이터 무결성 문제
    • 개별 INSERT에서는 각 행이 독립적으로 처리되므로 한 행에서 오류가 발생하더라도 다른 행에 영향을 미치지 않는다. 그러나 BULK INSERT에서는 전체 작업이 하나의 큰 트랜잭션으로 처리될 수 있어, 오류가 발생하면 전체 삽입이 실패할 수 있다.