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