Database
Home / Database
쿼리 문법을 넘어 데이터의 정합성과 성능을 함께 지키는 방법을 기록합니다.
다루는 주제
MySQL · PostgreSQL · Index · Transaction · Modeling · Redis
글 목록
- 격리 수준과 Dirty Read Non-repeatable Read Phantom Read
- 관계형 데이터베이스의 관계
- 관계형 데이터베이스의 기본 키를 고르는 기준
- 낙관적 락과 비관적 락을 선택하는 기준
- 날짜형 데이터 타입
- 논리 삭제 컬럼을 인덱스에 포함할지 판단하기
- 데드락이 생기는 이유와 재시도 전략
- 물리삭제와 논리삭제
- 반정규화를 고려해야 하는 시점
- 복합 인덱스의 왼쪽 접두 규칙
- 상품명 정규화와 가격 그룹핑 파이프라인
- 서브쿼리와 JOIN 중 무엇을 선택할까
- 슬로 쿼리 로그에서 개선 후보 찾기
- 외래 키가 데이터 정합성을 지키는 방식
- 이상현상(anomaly)
- 인덱스 선택도가 성능에 미치는 영향
- 인덱스가 많아질수록 쓰기가 느려지는 이유
- 자연 키와 인조 키의 장단점
- 자연키 vs 인조키
- 정규화
- 정규화가 중복과 이상 현상을 줄이는 원리
- 트랜잭션의 ACID를 실제 주문 처리로 이해하기
- 파티셔닝과 샤딩의 차이
- Auto Increment 식별자의 한계와 대안
- Auto Increment의 문제점
- B+Tree 인덱스가 검색 범위를 줄이는 원리
- Cache Aside 패턴과 캐시 무효화
- CHAR vs VARCHAR
- CHECK Constraint와 애플리케이션 검증의 역할
- Covering Index로 테이블 접근 줄이기
- DB 회원탈퇴처리
- EXPLAIN과 EXPLAIN ANALYZE 읽는 순서
- GROUP BY에서 집계 기준을 잘못 잡는 흔한 실수
- INNER JOIN과 LEFT JOIN 결과 차이 이해하기
- LIKE 검색이 인덱스를 타는 조건
- MySQL 복합 인덱스의 순서와 중복 인덱스 판단하기
- MySQL InnoDB의 MVCC가 읽기를 처리하는 방법
- NULL은 값이 아니라 알 수 없음이다
- ORDER BY와 LIMIT을 위한 인덱스 설계
- Outbox Pattern으로 DB와 이벤트 발행 일치시키기
- Postgres JSONB를 관계형 컬럼과 함께 쓰는 기준
- Redis를 캐시로 사용할 때 원본 데이터와의 관계
- SELECT FOR UPDATE를 사용할 때 주의할 점
- SQL vs NoSQL
- Supabase Postgres에서 유한 재고 추첨을 원자적으로 처리하기
- Unique Constraint를 비즈니스 규칙으로 활용하기
- UUID
- UUID v4와 시간 정렬 UUID 비교