TIL
2024.06.10 Concurrency Challenges in Database Transactions
Gisungcu
2024. 6. 10. 22:28
Concurrency Challenges in Database Transactions: Isolation Levels and Locking Mechanisms
Concurrency Challenges in Database Transactions: Isolation Levels and Locking Mechanisms
Picture a scenario where users in a banking system initiate fund transfers simultaneously, potentially leading to conflicts and…
dip-mazumder.medium.com
락에 대한 글.
낙관적 락과 비관적 락에 대해 이야기한다.
충돌이 자주 발생하지 않을 거 같거나, 높은 동시성이 중요하다면 낙관적 락이 적절.
데이터의 일관성과 제어가 가장 중요하다면 비관적 락이 적절.
낙관적 락을 보면
커밋 전 다른 트랜잭션에 의해 수정되었는지 확인한다.
읽기가 잠겨있지 않고 충동/동시 업데이트 시나리오 가능성이 적기 때문에 동시성이 높다.
다만 롤백의 위험이 있기 때문에 사용자 경험에 좋지 않다.
같은 데이터 행이 업데이트될 확률이 낮을 때
ex. google docs는 여러 사용자가 여러 페이지에 걸쳐서 수정이 가능하다.
비관적 락은
락을 잡으면 다른 트랜잭션은 해당 자원에 액세스 할 수 없다.
충돌은 적겠지만 동시성이 낮아 성능저하가 있으며 데드락 가능성이 높아진다.
ex. 은행은 이체 중 일관성을 보장하는 것이 중요하다.
음 재고는 비관적 락이 어울린다.