본문 바로가기

database

(2)
[Anifriends] Redis 캐시에서 발생한 동시성 이슈 해결기 🚀  개요데브코스 4기에서 봉사 플랫폼인 Anifriends 에서 보호 동물 조회 성능을 높이기 위해 첫 페이지와 총 데이터 개수를 캐시하였다. 개발한 지 3개월 지났지만, Redis와 동시성에 대해 공부를 더 하고 다시 코드를 보니 동시성 문제가 있을 만한 코드가 보여서 수정을 하려고 한다.캐시 자료 구조보호 동물 첫 페이지: 보호 동물 목록은 생성 시간 기준 내림 차순이고, Redis 의 ZSet(Sorted Sets)을 사용하였다. ZSet 은 score 기준 오름차순으로 정렬하므로, score 을 -created_at 로 설정하여 생성 시간 기준으로 내림 차순으로 정렬된 데이터를 캐시하였다.보호 동물 총 수: Redis 의 Strings를 사용하였다.캐시 전략읽기 전략: Look-Aside캐시에..
[MySQL] InnoDB 의 잠금 방식: 레코드락, 갭락, 넥스트키락 🚀  개요RealMySQL 책을 읽다가 InnoDB 스토리 엔진이 제공하는 락인 레코드락, 갭락, 넥스트키락에 대해 알게 되었다. 이 잠금들이 무엇이고 어떤 잠금 효과가 있는지 알아보자.회원 테이블백날 개념만 읽어봤자 잘 이해가 되지 않는다. 간단한 회원 테이블을 생성하여 실제 쿼리를 날려보며 락을 이해해보자. 회원 테이블은 다음과 같이 회원 아이디(member_id), 회원 이름(name), 회원 닉네임(nickname), 회원 나이(age)로 구성된다.10개의 회원 데이터를 생성하였다. 이제 이 데이터에 락을 걸어보며 실험해보자.📖 InnoDB 의 레코드락InnoDB 는 테이블의 레코드가 아닌 인덱스의 레코드를 잠근다. InnoDB 의 레코드락의 특징은 다음과 같다.인덱스를 통해 검색되는 모든 레..