본문 바로가기
반응형

분산락2

Redis 부숴버리기(5) 레디스를 사용한 동시성 문제 해결 - 분산 락 트랜잭션이 동시에 실행됐을 때 발생할 수 있는 문제 관련한 상황을 DB동시성 문제 라고 한다.1. Dirty Read한 트랜잭션이 다른 트랜잭션이 수정 중인 데이터를 읽을 수 있는 문제아직 commit되지 않은 데이터가 읽힘으로서, 추후 rollback 될 가능성이 있는 데이터 read (실제로는 커밋을 했는데, 반영이 안됐다 라는 뜻해결방법 : Read Committed 격리성 : 즉 커밋된 내용만 읽겠다는 뜻 2. Non-Repeatable Read .(UPDATE 문제)mariaDB의 기본 설정은 Repeatable Read 이다. 한 트랜잭션에서 동일한 조회 쿼리를 두 번 이상 실행할때에, 그 중간에 다른 트랜잭션에서 데이터를 수정하여 한 트랜잭션의 결과가 다르게 나타나는 문제 예시) 재고 업데이.. 2024. 5. 16.
Redis 부숴버리기(4) SingleThread, Atomic, 분산 락 이 전까지의 레디스는 Redis를 세션 저장소 및 캐시로 사용하는 전형적인 방법 중 하나이다. 이를 통해 세션 및 캐시를 효율적으로 관리하고 Redis의 고성능을 활용할 수 있다.Redis single thread  레디스는 사용자들이 실행한 명령어들을 이벤트 루프(event loop) 방식으로 처리한다. 즉, 클라이언트가 실행한 명령어들을 Event Queue에 적재하고 싱글 스레드로 하나씩 처리한다. 메모리를 사용하기 때문에 싱글 스레드로 데이터를 빠르게 처리할 수 있다. 하지만 레디스 6.0을 지나면서 레디스는 ThreadedIO 가 추가 되면서  Multi Thread 로 동작한다.레디스는 싱글 스레드 였기 때문에 대규모 데이터 처리에도 Atomic 연산을 보장했다.하지만 멀티스레드를 지원하면 A.. 2024. 5. 15.
반응형