- DB의 동시성 문제
- read -> write 시 동시에 한 레코드에 두 개 이상의 트랜잭션이 접근하면 일관성이 깨지게 된다
- 이를 해결 하는 방법은
- 격리성 레벨을 시리얼로 하거나
- Lock을 건다
- Lock
- 비관적 Lock
- 특정 레코드에 lock을 걸어서 트랜잭션이 끝날때까지 다른 트랜잭션이 접근을 못하게 한다.
- https://isntyet.github.io/jpa/JPA-%EB%B9%84%EA%B4%80%EC%A0%81-%EC%9E%A0%EA%B8%88(Pessimistic-Lock)/
- 효율성이 떨어지는 단점
- 낙관적 Lock
- 엔티티에 버전 필드를 만들어서 여러 트랜잭션이 동시에 접근은 가능하지만 이미 다른 트랜잭션이 값을 변경한 경우 내가 다시 업데이트를 하려고 하면 익셉션 발생하게 됨.
- https://isntyet.github.io/jpa/JPA-%EB%82%99%EA%B4%80%EC%A0%81-%EC%9E%A0%EA%B8%88(Optimisstic-Lock)/
- 트랜잭션이 복잡하면 정합성이 깨질 수있다.
- https://4whomtbts.tistory.com/118
- 비관적 Lock
'기타' 카테고리의 다른 글
ArchUnit을 이용한 패키지 의존성 테스트하기 (0) | 2022.03.30 |
---|---|
DSM을 이용하여 IntelliJ 에서 패키지 간 의존성 확인하기 (0) | 2022.03.30 |
사설 인증서(PKCS12) 생성 (0) | 2020.01.29 |
WIN-ACME 사용법(Windows에서 Letsencrypt 인증서 생성하기) (0) | 2019.12.10 |
MySQL 트랜잭션 Isolation Level 변경하기 (0) | 2019.10.15 |