작성
·
704
답변 4
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 은 로직 전용 커넥션 풀
감사합니다.
1
안녕하세요, 혹시 데이터 소스를 분리한다는 의미에 대해 조금 더 상세하게 설명해주실 수 있을까요?
커넥션 풀이 부족해지는 현상의 경우는 특정 커넥션이 락을 쥐고 놓지 않는다면, 이후 요청하는 커넥션들은 지속적으로 대기하게 되어 부족해진다고 생각이 되는데 제가 이해한게 맞을까요? 😂
(맞다면, Named Lock을 비롯한 모든 락이 해당 이슈가 있을 것이라 생각됩니다. 왜 Named Lock에서 특히 데이터 소스 분리가 필요하고, 아니면 커넥션 풀이 부족해지는 현상이 발생할 수 있다는 것을 강조해주셨는지 궁금합니다!)
동일한 데이터에 대해서 정합성을 보장하기 위해 락을 사용하는 것인데, 데이터 소스를 분리한다는 의미가 데이터를 샤딩과 같이 나눈다는 의미인지, replication의 의미인지, 최소한의 락을 사용하는 용도의 DB와 일반 DB를 분리한다는 의미인지 궁금합니다 :)
양질의 강의 감사합니다 :)
0
안녕하세요 :)
영상에서 말씀드린것처럼 데이터소스를 분리하지않고 하나로 사용하게되면 커넥션풀이 부족해지는 현상을 겪을 수 있어서 락을 사용하지 않는 다른서비스까지 영향을 끼칠 수 있습니다!
감사합니다!
0
오..자세한 설명 감사드립니다! 제가 Named lock에 대해서 잘 모르고 있었군요..🥲
궁금한 점이 해결되었습니다 ㅎㅎ 감사합니다 ☺️