DB

DB 락

Sol b 2023. 8. 18. 17:02
너 Key 갖고 있어??

DB 세션이 트랜잭션을 시작하고 데이터를 조작 후 커밋을 하지 않은 상태에서

다른 DB세션에서  동시에 데이터를 수정하면 원자성 문제가 생깁니다.

 

이런 문제를 해결하기 위해 데이터에 락을 걸어
처음 접근한 세션이 데이터를 수정하는 동안
다른 세션에서  접근할 수 없게 해야 합니다. 

 

데이터에 Key를 소유한 세션만 데이터 수정이 가능합니다.

DB 락

 

접근을 하면 Key를 흭득하고

Commit 또는 Rollback을 하면 Key를 반환합니다.

 

조회시 Lock

일반적인 조회는 락을 사용하지 않습니다.

하지만 트랜잭션 종료 시점까지 해당 데이터를 다른곳에서 변경하지 못하도록 강제로 막아야 할 때 사용합니다. 

 

조회시 락 방법

SELECT * FROM member where member_id ='test' FOR UPDATE

 

마무리

데이터의 Key를 소유하는 것을 파악하는것이 핵심인것 같습니다.