두 명 이상의 사용자가 동시에 하나 남은 객실을 예약할 경우, 객실은 하나만 예약 가능해야 하지만, 중복 예약이 발생하는 문제가 존재했다.
호텔 객실 별 여유 객실 정보를 담고 있는 room_type_inventory
테이블
중복 예약이 발생하는 문제는 동시성 제어 미흡으로 인해 발생했다.
데이터베이스에서 트랜잭션 처리나 락(Lock) 메커니즘이 제대로 구현되지 않았거나, 예약 상태를 실시간으로 갱신하지 못하는 로직이 원인일 가능성이 높다.
<aside> 📈
JMeter를 활용해 비관적 락 vs 낙관적 락 vs DB 제약조건 처리 성능 테스트
쓰레드 15, Ramp-up 시간 1, 루프 카운트 1, 각 경우마다 5번 테스트
</aside>
비관적 락 | 낙관적 락 | |
---|---|---|
장점 | 데이터의 일관성과 무결성을 강력하게 보장 | 접근 차단하지 않기에 비관적 락보다 성능적 이점 |
단점 | • 락을 얻지 못하면 접근이 차단되기 때문에 | |
성능 저하 문제 발생 | ||
• 데드락 발생 위험이 존재 | 충돌이 발생하면 롤백 처리가 되기 때문에 충돌이 많은 상황에서 비효율 |