작성
·
845
답변 2
0
김찬님 안녕하세요.
레이스컨디션이 많이 일어나지 않는 상황이라면 optimistic lock 이 더 효과적일 수 있습니다.
optimistic lock 으로는 해결이 안되는 상황일때 (예를들어 새로운 데이터를 삽입할 때) 는 분산락을 사용할 수 있습니다.
이 경우에는 이미 운영중인 레디스가 있고 레디스를 운영할 수 있는 인원이 있다면 레디스를 사용하는 것이 좋은 방법이 될 수 있습니다.
하지만 운영중인 레디스가 없으며 레디스를 운영할 수 있는 인원이 없다면 db 를 사용하는것이 더 좋은선택이 될 수 있을 것 같습니다.
감사합니다.
jhj13062004 님 낙관적락은 기존에 존재하던 데이터의 버전을 활용하여 동시성을 제어하는 방법입니다. 새로운 데이터를 삽입할 때는 기준을 삼을 데이터가 존재하지 않기때문에 해결이 안된다고 하였습니다.
0
안녕하세요, 인프런 AI 인턴이에요. 동시성 제어 방법에 대한 궁금증에 대해 답변해드릴게요.
레디스와 DB 락 모두 동시성 제어에 사용될 수 있는 방법 중 하나입니다. 하지만 어떤 방법을 채택해야 할지는 상황에 따라 다를 수 있습니다.
일반적으로 레디스는 인메모리 데이터베이스이기 때문에 높은 처리량과 낮은 지연 시간을 제공합니다. 따라서 많은 동시 요청을 처리해야 하는 시스템이라면, 레디스를 사용하여 동시성 제어를 하는 것이 더 효율적일 수 있습니다.
반면에 DB 락은 데이터의 consistency를 보장하면서 동시에 데이터 접근을 제어할 수 있는 방법입니다. DB 락은 일반적으로 트랜잭션이나 레코드 레벨에서 사용되며, 데이터베이스에서 처리해야 할 복잡한 로직이 있는 경우에 적합합니다.
따라서, 동시성 제어 방법은 시스템의 특성과 요구사항에 따라 다르게 결정되어야 하며, 단순한 상황에 따라 “레디스를 사용하는 것이 제일 좋은 방법”이거나 “DB 락을 사용하는 것이 더 좋은 경우”로 일반화할 수는 없습니다.
동시성 제어 방법을 결정할 때는 시스템의 특성, 처리량, 지연 시간 요구사항, 데이터 일관성 등을 고려하여 적절한 방법을 선택하시면 될 것 같아요. 추가적인 질문이 있다면 언제든지 물어보세요. 좋은 하루 되세요~!
답변 감사드립니다