인프런 커뮤니티 질문&답변
네임드락을 활용할 때 데이터소스를 분리해야하는 이유가 궁금해요!
작성
·
861
답변 4
2
안녕하세요, 혹시 데이터 소스를 분리한다는 의미에 대해 조금 더 상세하게 설명해주실 수 있을까요?
- 커넥션 풀이 부족해지는 현상의 경우는 특정 커넥션이 락을 쥐고 놓지 않는다면, 이후 요청하는 커넥션들은 지속적으로 대기하게 되어 부족해진다고 생각이 되는데 제가 이해한게 맞을까요? 😂 
 (맞다면, Named Lock을 비롯한 모든 락이 해당 이슈가 있을 것이라 생각됩니다. 왜 Named Lock에서 특히 데이터 소스 분리가 필요하고, 아니면 커넥션 풀이 부족해지는 현상이 발생할 수 있다는 것을 강조해주셨는지 궁금합니다!)
- 동일한 데이터에 대해서 정합성을 보장하기 위해 락을 사용하는 것인데, 데이터 소스를 분리한다는 의미가 데이터를 샤딩과 같이 나눈다는 의미인지, replication의 의미인지, 최소한의 락을 사용하는 용도의 DB와 일반 DB를 분리한다는 의미인지 궁금합니다 :) 
양질의 강의 감사합니다 :)
1

@hash_t 님 안녕하세요.
- 모든 lock 이 해제를 하지 않는다면 데이터소스가 부족해지는 현상이 나타날 수 있습니다. 
 특히 named lock 은 데이터소스를 분리해야 한다고 강조했던 이유는 커넥션을 2개를 사용하기 때문입니다. lock 획득에 필요한 connection 1개, transaction (로직) 에 필요한 커넥션 1개
- 샤딩과 replication 과 같은 의미는 아닙니다. 
 lock 을 사용하는 DB 와 일반 DB 를 분리하는것도 하나의 방법이 될 수 있습니다.
 다만, 제가 강의에서 말씀드린 케이스는 동일한 DB 에 2개의 커넥션풀을 사용한다는 의미였습니다.
 A Connection pool 은 lock 전용 커넥션풀, B Connection pool 은 로직 전용 커넥션 풀
감사합니다.
0

안녕하세요 :)
영상에서 말씀드린것처럼 데이터소스를 분리하지않고 하나로 사용하게되면 커넥션풀이 부족해지는 현상을 겪을 수 있어서 락을 사용하지 않는 다른서비스까지 영향을 끼칠 수 있습니다!
감사합니다!
0







오..자세한 설명 감사드립니다! 제가 Named lock에 대해서 잘 모르고 있었군요..🥲
궁금한 점이 해결되었습니다 ㅎㅎ 감사합니다 ☺️