inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

Named Lock 활용해보기

트랜잭션 전파속성, 데이터 소스

해결된 질문

648

rhkdals195

작성한 질문수 3

0

안녕하세요. 강의 잘 보고 있습니다. 의문이 생겨 질문을 남깁니다.

 

  1. 트랜잭션 전파속성을 REQUIRES_NEW로 해서 새로 생성한 이유가 있을까요? 그냥 REQUIRED로 하면 안되나요??

  2. 강의 내에서 데이터소스를 분리하는 것을 추천해주셨는데, 커넥션 풀 사이즈를 늘리면 안되나요??


     

    감사합니다.

     

java spring 동시성

답변 2

1

최상용

rhkdals195 님 안녕하세요.
1. 부모의 트랜잭션과 동일한 범위로 묶인다면 Synchronized 와 같은 문제가 발생합니다.
Database 에 commit 되기전에 락이 풀리는 현상이 발생합니다.
그렇기때문에 별도의 트랜잭션으로 분리를 해주어 Database 에 정상적으로 commit 이 된 이후에 락을 해제하는것을 의도하였습니다.
핵심은 lock 을 해제하기전에 Database 에 commit 이 되도록 하는것입니다.

  1. 커넥션 풀사이즈를 기존 20에서 40으로 늘렸다고 가정 해보겠습니다.
    이 때 동시에 많은 요청이와서 40개를 모두 락을 잡는데 사용한다면 전혀 상관없는 다른 쿼리들을 실행할 수가 없게됩니다.
    그렇기 때문에 락을 위해 사용할 데이터소스를 분리하는 것을 추천 드렸습니다.

감사합니다.

1

인프런 AI 인턴

안녕하세요 rhkdals195 님, 인프런 AI 인턴이에요.

  1. 트랜잭션 전파속성을 REQUIRES_NEW로 설정한 이유는 독립적인 트랜잭션을 요구하기 때문입니다. REQUIRED는 이미 진행 중인 트랜잭션이 있으면 그 트랜잭션을 사용하고, 없으면 새로운 트랜잭션을 생성합니다. 반면 REQUIRES_NEW는 항상 새로운 트랜잭션을 생성하므로, 호출하는 쪽의 트랜잭션과 독립적으로 실행됩니다. 따라서 특정 로직을 독립적으로 처리하고자 할 때 REQUIRES_NEW를 사용할 수 있습니다.

  2. 데이터소스를 분리하는 이유는 여러 이유로 인해 발생할 수 있는 문제를 완화시키기 위해서입니다. 예를 들어, 특정 데이터 소스의 부하가 높아지면 해당 데이터 소스에 대한 커넥션 풀 사이즈를 늘리는 것은 일시적인 해결책이 될 수 있지만, 전체 시스템에 영향을 줄 수 있습니다. 데이터소스를 분리하면 각각의 데이터 소스에 대해 독립적인 커넥션 풀을 설정할 수 있으므로, 한 데이터 소스의 부하가 다른 데이터 소스로 전파되지 않고, 서로 독립적으로 처리될 수 있습니다.

강의를 잘 이해하고 있어 질문을 주셔서 감사합니다. 더 궁금한 사항이 있으시면 언제든지 질문해주세요!

레디선 테스트코드에서 채널이름은 없어도 되는건가요?

0

43

2

낙관적 락을 사용할 떄 차이점

0

120

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

260

2

NamedLock 테스트 실패

0

186

2

테스트에서 트랜잭션 어노테이션 질문 있습니다.

0

172

2

optimistic Lock 재시도 질문입니다.

0

230

2

낙관적 락 테스트 실패

0

239

2

오류?

0

1627

4

LettureLockStockFacadeTest에서 오류가 발생합니다.

1

268

2

Pessimistic Lock 전체 테스트 오류 문의

0

360

3

비관적 락 vs 레디스(Lettuce)락 비교 관련 질문

0

460

2