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. 은행은 이체 중 일관성을 보장하는 것이 중요하다.

 

음 재고는 비관적 락이 어울린다.