락 선택 이유와 성능 테스트
개요 이 포스트는 세 가지 동시성 제어 방식의 성능을 비교합니다: 락 없는 트랜잭션, Beta Lock, Redisson 분산락 테스트 환경 DB: H2 (MariaDB 모드) 환경: 로컬 Redis: Embedded 스레드 수: 32 요청 횟수: 각 1회 1. 트랜잭션만 사용한 결과 @Transactional public void notUseLockTest(String lockName, Integer userId) { BeanPay beanPay = getBeanPay(1, Role.USER); final BeanPayDetail beanPayDetail = BeanPayDetail.ofCreate( beanPay, 1, 5000 ); final BeanPayDetail createBeanPayDetail = beanPayDetailRepository.save(beanPayDetail); beanPay.chargeBeanPayDetail(createBeanPayDetail.getAmount()); } 결과 트랜잭션만 사용하면 MySQL의 기본 격리 수준(Repeatable Read)에서 Lost Update 문제가 발생하여 데이터 정합성이 낮아집니다. ...