🛠 백엔드/데이터베이스4 [DB] Redis에서의 Persistence Redis Database (Snapshotting)주기적으로 RDB의 스냅샷을 만들고 백업하여 필요 시 롤백하는 방식장점장애 복구 탁월단일 파일로 파일 전송이 쉬움AOF보다 빠른 재시작 가능단점스냅샷 사이의 텀 발생 시, 데이터 유실 가능자식 프로세스를 통해 디스크에 스냅샷을 지속시킨다. 데이터 셋이 큰 경우 fork()가 오래 걸리기에 CPU 성능에 좋지 않음 (AOF는 fork()를 덜 자주 실행함)AOF (Append Only File)트랜잭션 커밋 시 RAM과 redo 로그(Append Only File)에 모두 저장fsync 정책을 통해 파일과 장치를 동기화한다. 기본적으로 1초마다 fsync를 하고 백그라운드 스레드로 동작한다. 메인 스레드는 fsync가 진행 중이지 않을 때 쓰기 작업을 받.. 2025. 2. 13. [DB] Soft Delete 도입에 관해 논리적 삭제를 통해 얻게되는 장단점을 먼저 정리해보자📌 Soft Delete 개요Soft Delete 장점정보 보존에 따른 복구 가능DELETE 보다 빠른 속도의 UPDATE데이터를 활용한 추후 서비스 및 활용이 가능Soft Delete 단점데이터베이스 용량 증가모든 쿼리에서 소프트 딜리트된 데이터를 제외시켜야 함🤔 도입해야 할까?우리 서비스에 필요한가?현재 서비스에서 제공되는 기능 중 주요한 데이터라고 생각되는 것은 도면과 결제, 주문, 회원이라고 생각된다.도면의 경우, 추후 도입될 업로드 기능이 생길 경우 복구가 불가피할 것으로 보인다. 또한 삭제한 데이터도 가지고 있어 도면에 대한 데이터를 축적할 수 있다는 장점을 가진다.회원의 경우도 회원가입 시 선택되는 직업, 나이에 대한 정보가 우리 서비스.. 2025. 2. 12. [DB] MySQL과 PostgreSQL의 격리 수준 (w/ 이상 현상) 👻 이상 현상이름설명Dirty Read다른 트랜잭션에서 Flush되지 않은 변경사항이 반영되는 현상Non-Repeatable Read같은 조회 쿼리 사이에 다른 트랜잭션의 커밋된 내용이 반영되어 조회 결과가 달라지는 현상Phantom Reads다른 트랜잭션에서 추가된 행이 반영되는 현상Lost Update현재 트랜잭션에 의해 다른 트랜잭션의 커밋된 변경사항이 사라지는 현상PostgreSQLPG는 MVCC를 통해 격리 수준을 구현한다. MVCC는 특정 시점에 커밋된 데이터를 읽는 것이다. 따라서 내부적으로 read uncommitted를 제공하지 않는다.1️⃣ SERIALIZABLE특정 트랜잭션이 사용 중인 모든 행을 다른 트랜잭션 접근 못하도록 잠금 (가장 엄격)마치 순차적으로 실행하는 것처럼 보여, .. 2025. 2. 11. [DB] INDEX란? (with. 클러스터링 & 논-클러스터링) 인덱스를 사용하는 이유 SELECT * FROM customer WHERE first_name = 'Minsoo';first_name이 Minsoo인 튜플을 찾기 위해 full Scan이 진행된다.사용 이유조건을 만족하는 튜플을 빠르게 조회빠르게 정렬(order by)하거나 그룹핑(group by)하기 위해인덱스를 거는 방법SELECT * FROM player WHERE name = 'Sonny'SELECT * FROM player WHERE team_id = 105 AND backnumber = 7;위 조회 쿼리에서 사용할 인덱스를 걸어보자CREATE INDEX player_name_idx ON player (name)CREATE UNIQUE INDEX team_id_backnumber_idx ON p.. 2024. 7. 21. 이전 1 다음