낙관적 락, 비관적 락 말고 항상 분산락을 쓰는게 좋을까요?
3226
작성한 질문수 3
공부하다가 의문이 생겼는데요,
낙관적 락
- 충돌 잦으면 락 획득 재시도 로직 때문에 성능 안좋음
비관적 락
- 충돌 잦으면 낙관적 락보다 성능좋음.
분산 락
- 스케일 아웃된 DB 환경에서도 사용 가능
- Redis 라이브러리마다 다른데
Lettuce는 스핀락으로 구현되서 재시도 많으면 불리
Redisson은 pub-sub 기반이라 재시도 많으면 유리
정확하진 않지만 이렇게 알고있습니다.
질문은
1. 잘못 알고 있나요?
2. 제가 공부한게 맞다면, 무조건 비관적 락, 낙관적 락 말고 분산락 + Redis(Lettuce/Redisson) 쓰는게 좋은건가요?
답변 1
4
kevin 님 안녕하세요. 답변이 늦어서 죄송합니다.
분산락은 스케일 아웃된 DB 환경에서 사용하는것이 아닌 여러대의 applictaion (서버) 가 있을 때 사용하는 것이라고 생각하시면 편할 것 같습니다. 그 이외에는 알고계신 것이 맞습니다.jeoningu 님 도움으로 2023.05.29 답변 정정합니다.
분산락은 스케일 아웃된 DB 환경 또는 여러대의 applictaion (서버) 가 있을 때 사용하는 것이라고 생각하시면 편할 것 같습니다.무조건 redis 가 좋다고 말씀을 드릴수는 없을 것 같습니다. 예를들어 충돌이 1년에 1~2건 일어날정도로 작다면 redis 를 도입하기보다는 낙관적락을 사용하는것이 효율 적일 수 있습니다.
또한 이미 redis 를 사용중인 환경이라면 문제없겠지만 redis 를 사용중이지 않을경우 redis 에 대한 운영비용이 추가로 들게됩니다.
무조건 redis 가 낫다고 볼 수 없으며 상황마다, 환경마다 다르다고 말씀 드릴 수 있을 것 같습니다.
7
분산된 디비에는 낙관적 락 비관적 락으로는 해결할 수 없으니 분산 락으로 동시성 제어 해야되는거 아닌가요?
분산 서버에서는 디비만 하나면 낙관적 락 비관적 락으로 동시성 제어 가능하니 분산 락 안 써도 되고요.
4
jeoningu 님 답변 감사드립니다.
말씀하신대로 분산된 디비에서는 분산락을 통해 제어해야 합니다.
강의 내용을 토대로 답변을 드리다보니 스케일 아웃DB 보다는 Application Server 를 중점으로 생각했던 것 같습니다.
답변을 정정해주셔서 감사합니다!
레디선 테스트코드에서 채널이름은 없어도 되는건가요?
0
43
2
낙관적 락을 사용할 떄 차이점
0
121
2
동시성 검증 코드에 관한 문의
0
94
2
단일연산
0
70
2
낙관적락vs. 레디스락
0
108
2
안녕하세요. 레디슨 질문있습니다..!!
0
67
2
@Lock(OPTIMISTIC)이 필요한 이유
0
90
2
get_lock 의 timeout이 3000초 이던데 너무 긴거 아닌가요?
0
132
2
DataSource Hikari 사용 이유
0
147
2
saveAndFlush 사용 이유 문의
0
113
3
비관적 락 VS 네임드 락
0
160
3
application.yaml 에 redis 정보
0
100
2
왜 클래스 이름에 Facade 가 붙나요?
0
185
2
@Transactional 으로 인한 동시성 문제 발생 원인이 궁금합니다.
0
219
2
@modifying 이용한 동시성 제어
0
168
2
DB락과 분산락
0
262
2
NamedLock 테스트 실패
0
186
2
테스트에서 트랜잭션 어노테이션 질문 있습니다.
0
173
2
optimistic Lock 재시도 질문입니다.
0
231
2
낙관적 락 테스트 실패
0
241
2
오류?
0
1627
4
LettureLockStockFacadeTest에서 오류가 발생합니다.
1
268
2
Pessimistic Lock 전체 테스트 오류 문의
0
360
3
비관적 락 vs 레디스(Lettuce)락 비교 관련 질문
0
460
2





