| 구분 | AS-IS (이전) | TO-BE (개선) |
|---|---|---|
| 처리 방식 | 루프 내 개별 조회/저장 (N+1) | 벌크 조회 + 메모리 필터링 + 벌크 저장 |
| 쿼리 수 | 플레이어당 2회 (10명 기준 20회) | 데이터 수 상관없이 최대 3회 |
| 데이터 정합성 | 트랜잭션 없음 (일부 누락 가능) | Transaction 적용 (전체 성공/실패) |
| 로직 안정성 | DB 에러 시 부분 저장 위험 | 실패 시 자동 롤백 및 에러 로깅 |
In() 연산자를 사용해 참여자 전원의 기존 기록을 단 1번의 쿼리로 조회
Map 객체를 활용하여 메모리상에서 O(1) 속도로 기존 기록 존재 여부를 매칭
manager.save(entities)를 사용하여 INSERT 및 UPDATE를 배치(Batch)로 실행
코드 내 설명
manager 객체를 사용하여 모든 쿼리를 하나의 커넥션으로 묶기emit)