본문 바로가기
728x90

🏫CS18

[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] 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.
[DB - SQL] IN과 EXISTS의 차이 부속 질의문을 이용하여 검색할 때, SQL에선 여러 연산자를 지원한다. 이 중 IN과 EXISTS에 대해 혼란이 생겨 글을 정리한다. 정의 IN 부속 질의문의 결과 값 중 일치하는 것이 있으면 검색 조건이 참 EXISTS 부속 질의문의 결과 값이 하나라도 존재하면 검색 조건이 참 정의보단 실행순서에서 차이가 존재한다. 실행순서 IN 서브 쿼리 결과값을 메인 쿼리에 대입하여 비교 후 결과 출력 EXISTS 메인 쿼리 결과값을 서브 쿼리에 대입하여 비교 후 결과 출력 IN : 서브 쿼리 -> 메인 쿼리 EXISTS : 메인 쿼리 -> 서브 쿼리 이제 예를 들어보자 SELECT 고객이름 FROM 고객 WHERE EXISTS ( SELECT * FROM 주문 WHERE 주문일자 = '2022-03-15' AND.. 2024. 4. 5.
[DB] 데이터 모델링 개체-관계 모델 속성의 분류 단일 값 속성 : 값을 하나만 가짐 (고객 개체의 이름) 다중 값 속성 : 값을 여러 개 가질 수 있음 (고객 개체의 연락처) - ERD에선 이중 원으로 표현 단순 속성 : 의미 분해 불가능 (적립금, ISBN) 복합 속성 : 의미 분해 가능 (도,시,동으로 구성된 주소 속성) 유도 속성 : 기존의 다른 속성의 값에서 유도되어 결정 / 값 별도로 없음 (할인율을 반영한 판매가 속성) 널 속성 : 널 값이 허용되는 속성 키 속성 : 각 개체 인스턴스를 식별하는 데 사용 (Unique) 관계의 참여 특성 필수적 참여 모든 개체 인스턴스가 관계에 반드시 참여 ERD에 이중선으로 표현 선택적 참여 개체 인스턴스 중 일부만 관계에 참여해도 됨 관계의 종속성 약한 개체 : 다른 개체의 .. 2024. 4. 1.
[DB] RDB 용어 및 키 & 무결성 제약조건 관계 데이터 모델 용어 릴레이션(Relation) = 테이블 파일 관리 시스템 관점에서 File에 대응 속성(Attribute) 릴레이션의 열(Column) 파일 관리 시스템 관점에서 Field에 대응 튜플(Tuple) 릴레이션의 행(Row) 파일 관리 시스템 관점에서 Record에 대응 도메인(Domain) 속성의 데이터 타입 하나의 속성이 가질 수 있는 모든 값의 집합 널(Null) 속성의 값이 없음을 표현 차수(Degree) 하나의 릴레이션에서의 전체 속성 갯수 카디널리티(Cardinality) 하나의 릴레이션에서의 전체 튜플 갯수 릴레이션의 특성 튜플의 유일성 동일한 튜플 존재 X -> 유일한 구별을 위해 속성의 값을 사용 튜플의 무순서 튜플 사이의 순서는 무의미 속성의 무순서 속성 사이의 순서는.. 2024. 3. 31.
728x90