-
SQL BOOSTER - 불필요한 트랜잭션의 분리카테고리 없음 2024. 7. 9. 22:23
트랜잭션을 최소화하려면 불필요한 작업을 트랜잭션에서 분리할 필요가 있다.
위와 같은 가상의 주문처리 트랜잭션에서
- A고객은 주문 완료 문자 발송 작업에서 지연이 발생 (외부 시스템과 연계하는 과정에서 딜레이)
- A고객은 주문한 재고 데이터에 락을 잡고 있음 -> 트랜잭션을 종료하지 못했으므로 락이 유지
- B고객은 재고 데이터 변경할 때 대기 상태에 빠지게됨
주문 완료 문자 발송 작업은 주문처리 트랜잭션에 포함할 필요가 없다! 별도의 트랜잭션으로 분리하는 것을 고려해야한다.
이처럼 트랜잭션과 주요 연관성이 떨어지는 작업을 분리하면, 트랜잭션의 실행 시간을 줄 일 수 있다.
이로 인해 락을 빠르게 해소 할 수 있으며 결과적으로 데이터베이스 동시성을 높일 수 있다.