트랜잭션 락은 데이터베이스에서 여러 트랜잭션이 동시에 데이터에 접근하고 수정하는 것을 제어하기 위해 사용되는 메커니즘입니다. (동시성 이슈 해소용)
트랜잭션 락은 크게 2가지 유형으로 나뉩니다.
1. 동시성이 높음: 여러 트랜잭션이 동시에 데이터를 읽을 수 있기 때문에 동시성이 향상됩니다.
2. 트랜잭션 충돌 최소화: 락을 걸지 않고 데이터를 읽기 때문에 트랜잭션 간 충돌이 발생할 확률이 적습니다.
3. 성능 개선: 락을 걸지 않기 때문에 비관적락보단 성능이향상됩니다.
1. 트랜잭션 충돌 처리 필요: 데이터를 업데이트할 때 충돌이 발생할 경우, 추가적인 충돌 처리 로직이 필요합니다.
3. 트랜잭션 롤백 가능성: 충돌이 발생한 경우 트랜잭션을 롤백하고 재시도 해야 할 수 있습니다.
1. 데이터 일관성 보장 : 락을 걸어 다른 트랜잭션이 해당 데이터를 읽지 못하도록 하므로 동시성이슈에 대해 안전합니다.
2. 충돌 방지 : 다른 트랜잭션이 읽기나 쓰기를 시도할 때 락을 걸기 때문에 충돌이 발생하지 않습니다.
1. 성능감소: 락을 걸고 있으므로 동시성이 감소하고, 대기시간이 늘어납니다.
2. 데드락 가능성 : 락을 사용하다 보면 데드락이 발생할 수 있는 위험이 있습니다.
3. 자원의낭비 : 락을 걸고있는 동안 다른 트랜잭션들이 해당 자원을 사용하지 못하므로 자원의 낭비가 발생합니다.
예제코드 작성
[오늘의집 클론코딩] 간편회원가입, 자체회원가입 함께 적용 1화 - Meow Developers (0) | 2024.01.11 |
---|---|
[JPA] @AttributeOverride (0) | 2024.01.07 |
[TDD] Spock이란? [1/3] (0) | 2023.12.29 |
[JPA&Hibernate] 지연로딩을 가능하게 하는 Proxy란? (1) | 2023.12.28 |
[스프링] Hibernate DDL AUTO 주의할점(단점) (0) | 2023.12.24 |