concurrency2 [동시성 제어] 락 (Lock) - Redis 로 구현한 분산 락 동시성 (Concurrency) 문제는 여러 상황과 관점에서 다양하게 나타날 수 있다. 앞에서는 동일한 레코드 즉, 동일한 Table 의 Row 를 동시에 접근했을 때의 제어 방법으로 낙관적 (Optimistic) 락과 비관적 (Pessimistic) 락에 대해 알아보았다. 2024.02.15 - [Database] - 동시성 제어 - 락 (Lock) - 낙관적 락 & 비관적 락 하지만 DB 가 여러 서버에 분산 저장되어 있는 환경에서는 어떨까? 1번 DB 의 레코드에 Lock 을 걸어도 2번 DB 로 동일한 요청이 들어온다면, 서버끼리 Lock 을 공유하진 않으므로 레코드 접근이 가능해진다. 그렇다면 DB 진입 전에 요청을 순차적으로 처리할 수 있는 단일진입점이 하나 있으면 해결 할 수 있지 않을까? .. 2024. 3. 13. [동시성 제어] 락 (Lock) - 낙관적 락 & 비관적 락 여러 사용자가 동시에 동일한 자원에 접근하고 수정하는 일은 충분히 일어날 수 있다. 이때 제어처리를 제대로 하지 않으면 사용자로 하여금 혼란을 야기하는데, 이를 동시성 (Concurrency) 문제라고 한다. Database 에서의 동시성 문제를 해결하는 방안으로 잠금 (Lock) 전략이 있다. 락은 자원이 이미 다른 누군가가 점유 및 사용하고 있을 때 해당 리소스에 대한 접근을 잠금으로써 동시 작업이 수행되는 것을 방지한다. 락의 종류 1) Optimistic Lock (낙관적 락 / 비선점 락) 낙관적 (Optimistic) : 기본적으로 데이터 갱신시 충돌이 발생하지 않을 것이라고 낙관적으로 보는 락이다. 비선점 (Non-preemptive) : 데이터 갱신시 충돌이 발생하지 않을 걸 전제로 하기 .. 2024. 2. 15. 이전 1 다음