너 Key 갖고 있어??
DB 세션이 트랜잭션을 시작하고 데이터를 조작 후 커밋을 하지 않은 상태에서
다른 DB세션에서 동시에 데이터를 수정하면 원자성 문제가 생깁니다.
이런 문제를 해결하기 위해 데이터에 락을 걸어
처음 접근한 세션이 데이터를 수정하는 동안
다른 세션에서 접근할 수 없게 해야 합니다.
데이터에 Key를 소유한 세션만 데이터 수정이 가능합니다.

접근을 하면 Key를 흭득하고
Commit 또는 Rollback을 하면 Key를 반환합니다.
조회시 Lock
일반적인 조회는 락을 사용하지 않습니다.
하지만 트랜잭션 종료 시점까지 해당 데이터를 다른곳에서 변경하지 못하도록 강제로 막아야 할 때 사용합니다.
조회시 락 방법
SELECT * FROM member where member_id ='test' FOR UPDATE
마무리
데이터의 Key를 소유하는 것을 파악하는것이 핵심인것 같습니다.
'DB' 카테고리의 다른 글
트랜잭션 (0) | 2023.08.18 |
---|---|
DataSource란? (0) | 2023.08.17 |
커넥션 풀을 사용하는 이유 (0) | 2023.08.17 |
너 Key 갖고 있어??
DB 세션이 트랜잭션을 시작하고 데이터를 조작 후 커밋을 하지 않은 상태에서
다른 DB세션에서 동시에 데이터를 수정하면 원자성 문제가 생깁니다.
이런 문제를 해결하기 위해 데이터에 락을 걸어
처음 접근한 세션이 데이터를 수정하는 동안
다른 세션에서 접근할 수 없게 해야 합니다.
데이터에 Key를 소유한 세션만 데이터 수정이 가능합니다.

접근을 하면 Key를 흭득하고
Commit 또는 Rollback을 하면 Key를 반환합니다.
조회시 Lock
일반적인 조회는 락을 사용하지 않습니다.
하지만 트랜잭션 종료 시점까지 해당 데이터를 다른곳에서 변경하지 못하도록 강제로 막아야 할 때 사용합니다.
조회시 락 방법
SELECT * FROM member where member_id ='test' FOR UPDATE
마무리
데이터의 Key를 소유하는 것을 파악하는것이 핵심인것 같습니다.
'DB' 카테고리의 다른 글
트랜잭션 (0) | 2023.08.18 |
---|---|
DataSource란? (0) | 2023.08.17 |
커넥션 풀을 사용하는 이유 (0) | 2023.08.17 |