태그: Fundamentals of Database Engineering
이 태그가 붙은 글 "Fundamentals of Database Engineering".
섹션8 실습 2: PostgreSQL keyset 페이지네이션
PostgreSQL 17.11에서 복합 커서 값과 경계 조건을 확인하고, 복합 B-tree가 Index Only Scan에 쓰이는지 살펴본다.
섹션8 실습 1: PostgreSQL 행 잠금과 데드락
PostgreSQL 17.11 임시 인스턴스에서 행 잠금 대기와 데드락을 재현하고, 데이터 규모에 따라 달라지는 실행 계획을 비교한다.
섹션8: PostgreSQL 페이지네이션
OFFSET의 누적 비용과 페이지 이동 흔들림을 확인하고, 단일 키와 복합 정렬 키를 이용한 keyset 페이지네이션을 정리한다.
섹션8: PostgreSQL 동시성 제어
MVCC 읽기와 네 가지 행 잠금, 대기 후 재평가, 데드락, 다중 행 잠금 순서와 Django ORM의 범위를 구분한다.
섹션8 실습 1: Django ASGI에서 idle 커넥션 재사용 확인
Django 4.2 ASGI에서 CONN_MAX_AGE에 따라 요청 뒤 PostgreSQL 커넥션이 닫히거나 idle로 남고, 다음 요청에서 재사용되는지 확인한다.
섹션6: 안 쓰는 파티션을 CSV 로 내리기
detach 는 떼어 내기일 뿐 용량도 그대로다. MariaDB 는 저장 엔진을 바꿔서, Postgres 는 CSV 를 외부 테이블로 만들어 파티션에 다시 붙여서 보관한다. 각각 무엇을 잃는지 확인했다.
섹션6 실습: 파티션을 직접 쪼개 보기
부모에 파일이 없다는 것부터 DEFAULT 함정, 트리거로 파티션을 못 만드는 이유, 프루닝이 안 되는 조건, 복합 PK·FK 까지 PostgreSQL 17 컨테이너에서 하나씩 확인한다.
섹션6: 데이터베이스 파티셔닝
부모 테이블에는 힙도 인덱스도 없고 파티션 하나하나가 완전한 테이블이다. 유니크에 파티션 키가 필요한 것, FK 가 복합으로만 걸리는 것, 파티션 키 없는 조회가 모든 파티션을 뒤지는 것이 전부 여기서 나온다.
섹션4,5: 쓰기가 쌓이면 인덱스는 어떻게 되나
클러스터 구조인 InnoDB 가 더 자주 망가질 줄 알았는데 반대였다. 갱신·삭제는 스스로 되돌리고, 난수 PK 만은 스스로 못 고친다.
섹션4 실습: 인덱스 페이지 안을 직접 열어보기
인덱스가 파일 안에서 어떻게 생겼는지부터, key column 과 non-key column 이 어디서 갈리는지까지 pageinspect 로 페이지 바이트를 직접 열어 확인한다.