Database

글 13개

B-tree와 LSM-tree - 읽기와 쓰기 중 무엇을 팔 것인가

Database · Storage

B-tree와 LSM-tree - 읽기와 쓰기 중 무엇을 팔 것인가

8바이트를 바꾸려고 8KB를 다시 쓴다. 그게 싫으면 뒤집으면 되는데, 그러면 읽기가 대가를 낸다.

·데이터베이스 공통 개념 13편
복제 - 방금 쓴 걸 왜 못 읽는가

Database · Scaling

복제 - 방금 쓴 걸 왜 못 읽는가

읽기를 늘리려고 복제했더니 시간이 뒤엉킨다. 그리고 격리 수준은 이걸 막아주지 않는다.

·데이터베이스 공통 개념 12편
파티셔닝과 샤딩 - 나누면 무엇을 잃는가

Database · Scaling

파티셔닝과 샤딩 - 나누면 무엇을 잃는가

둘의 경계는 '누가 조각을 아는가'다. 그리고 샤딩하는 순간 지금까지의 트랜잭션 이야기가 대부분 무효가 된다.

·데이터베이스 공통 개념 11편
키 설계 - 무엇으로 행을 가리킬 것인가

Database · Design

키 설계 - 무엇으로 행을 가리킬 것인가

자연키가 배신하는 순간, 대리키를 쓰면서 흔히 빠뜨리는 것, 그리고 UUID가 인덱스를 망가뜨리는 이유.

·데이터베이스 공통 개념 10편
정규화 - 한 테이블은 한 가지 사실만 말한다

Database · Design

정규화 - 한 테이블은 한 가지 사실만 말한다

정규형을 외우지 않고도 판단하는 법, 그리고 반정규화가 실제로 무엇을 사고파는 거래인지.

·데이터베이스 공통 개념 9편
실행 계획 - 세 가지만 보면 된다

Database · Performance

실행 계획 - 세 가지만 보면 된다

EXPLAIN 출력이 외계어처럼 보일 때. 트리를 어느 방향으로 읽고, 어디서 범인을 찾는가.

·데이터베이스 공통 개념 8편
조인 알고리즘 - DB는 세 가지 방법 중 하나를 고른다

Database · Join

조인 알고리즘 - DB는 세 가지 방법 중 하나를 고른다

중첩 반복·해시·정렬 병합이 각각 언제 이기는지, 그리고 조인이 갑자기 느려지는 진짜 이유.

·데이터베이스 공통 개념 7편
인덱스 - 왜 빠르고, 왜 만들어도 안 타는가

Database · Index

인덱스 - 왜 빠르고, 왜 만들어도 안 타는가

B-tree가 이진트리가 아닌 이유부터, 인덱스를 만들어놓고도 풀스캔이 도는 다섯 가지 경우까지.

·데이터베이스 공통 개념 6편
블록 - DB는 바이트를 모른다

Database · Storage

블록 - DB는 바이트를 모른다

4바이트를 읽으려고 8KB를 읽는다. 낭비처럼 보이는 이 단위가 뒤에 나올 거의 모든 것의 바닥이다.

·데이터베이스 공통 개념 5편
MVCC - 잠그는 대신 버전을 쌓는다

Database · Transaction

MVCC - 잠그는 대신 버전을 쌓는다

읽기가 쓰기를 막지 않게 만든 대가로 무엇을 떠안게 되는가. 버전 체인, 스냅샷, 그리고 청소 문제.

·데이터베이스 공통 개념 4편
락과 데드락 - 잠가서 지키는 방식의 대가

Database · Transaction

락과 데드락 - 잠가서 지키는 방식의 대가

공유락·배타락에서 2단계 잠금까지, 그리고 두 트랜잭션이 서로를 영원히 기다리게 되는 과정.

·데이터베이스 공통 개념 3편
격리 수준 - 같이 읽고 쓰면 무엇이 깨지는가

Database · Transaction

격리 수준 - 같이 읽고 쓰면 무엇이 깨지는가

더티 리드·반복 불가능 읽기·팬텀 리드가 언제 생기는지, 그리고 격리 수준이라는 이름이 왜 믿을 게 못 되는지.

·데이터베이스 공통 개념 2편
트랜잭션과 ACID - 네 글자의 무게가 다르다

Database · Transaction

트랜잭션과 ACID - 네 글자의 무게가 다르다

원자성·일관성·격리성·지속성이 각각 무엇을 보장하는지, 그리고 왜 넷 중 하나만 협상 대상인지.

·데이터베이스 공통 개념 1편