inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

재고시스템으로 알아보는 동시성이슈 해결방법

Mysql 과 Redis 비교하기

낙관적 락, 비관적 락 말고 항상 분산락을 쓰는게 좋을까요?

3226

kevin

작성한 질문수 3

1

공부하다가 의문이 생겼는데요,

낙관적 락

- 충돌 잦으면 락 획득 재시도 로직 때문에 성능 안좋음

비관적 락

- 충돌 잦으면 낙관적 락보다 성능좋음.

분산 락

- 스케일 아웃된 DB 환경에서도 사용 가능

- Redis 라이브러리마다 다른데

Lettuce는 스핀락으로 구현되서 재시도 많으면 불리

Redisson은 pub-sub 기반이라 재시도 많으면 유리

정확하진 않지만 이렇게 알고있습니다.

질문은

1. 잘못 알고 있나요?

2. 제가 공부한게 맞다면, 무조건 비관적 락, 낙관적 락 말고 분산락 + Redis(Lettuce/Redisson) 쓰는게 좋은건가요?

 

java spring 동시성

답변 1

4

최상용

kevin 님 안녕하세요. 답변이 늦어서 죄송합니다.

  1. 분산락은 스케일 아웃된 DB 환경에서 사용하는것이 아닌 여러대의 applictaion (서버) 가 있을 때 사용하는 것이라고 생각하시면 편할 것 같습니다. 그 이외에는 알고계신 것이 맞습니다.
    jeoningu 님 도움으로 2023.05.29 답변 정정합니다.
    분산락은 스케일 아웃된 DB 환경 또는 여러대의 applictaion (서버) 가 있을 때 사용하는 것이라고 생각하시면 편할 것 같습니다.

  2. 무조건 redis 가 좋다고 말씀을 드릴수는 없을 것 같습니다. 예를들어 충돌이 1년에 1~2건 일어날정도로 작다면 redis 를 도입하기보다는 낙관적락을 사용하는것이 효율 적일 수 있습니다.
    또한 이미 redis 를 사용중인 환경이라면 문제없겠지만 redis 를 사용중이지 않을경우 redis 에 대한 운영비용이 추가로 들게됩니다.
    무조건 redis 가 낫다고 볼 수 없으며 상황마다, 환경마다 다르다고 말씀 드릴 수 있을 것 같습니다.

 

7

jeoningu

분산된 디비에는 낙관적 락 비관적 락으로는 해결할 수 없으니 분산 락으로 동시성 제어 해야되는거 아닌가요?

분산 서버에서는 디비만 하나면 낙관적 락 비관적 락으로 동시성 제어 가능하니 분산 락 안 써도 되고요.

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