과도한 트래픽 대응
기존에 단일 DB 였다면, 마스터/슬레이브 모델 (=Replica)을 사용해 트래픽 분산
- 1대의 Read/Write 마스터 DB와 해당 DB를 복제하는 다수의 Slave DB 를 생성하여 트래픽 분산
동시성 이슈 (Concurrency Issue)
동시성 이슈란 : 여러 스레드가 동시에 같은 인스턴스의 필드 값을 변경 하면서 발생하는 문제
예시) Read & Update를 가진 여러 Transaction 요청이 동시에 들어올 때 transcation 1의 Update(+1)이 완료 되지 않은채 transaction 2의 Update(+1)가 요청 되어 정상적으로 값 변경이 안된 상황
- 1) transaction 격리 수준 직접 수정 : READ COMMITTED => REPEATABLE READ
- 2) Django의 select for update (=row lock을 제어하는 방식) : DBMS 전체(or table) lock 보단, 좁은 범위에 lock을 사용하여 성능 하향을 최소화
- 3) redis : aplication단에서 lock을 잡는 방식. redis는 setnx를 지원
'DB > 경험 공유' 카테고리의 다른 글
[DB, Django] Migration 이슈 해결 모음 (0) | 2023.07.08 |
---|