#Database

실행계획 노드가 나타나는 조건 — 스캔·조인·정렬 예시로 확인

Seq Scan이 Hash Join으로, Nested Loop이 Merge Join으로 바뀌는 조건을 실제 EXPLAIN 결과로 확인한다

·데이터베이스·기본개념, Database, PostgreSQL

계층 구조를 부모 참조로 저장하는 Adjacency List

각 행이 자신의 parent_id만 저장하는 가장 기본적인 계층 구조 저장 방식과, 재귀 조회가 필요한 이유·비용을 정리한다

·데이터베이스·기본개념, Database, 계층구조

계층 구조를 저장하는 Closure Table

부모-자식 컬럼만으로는 재귀 조회가 필요한 계층 구조를, 조상-자손 관계를 미리 계산해 저장하는 Closure Table로 다루는 방법을 정리한다

·데이터베이스·기본개념, Database, 계층구조

계층 구조를 숫자 구간으로 저장하는 Nested Set

트리를 깊이 우선으로 순회해 매긴 left/right 번호로 계층을 표현하는 Nested Set의 동작 방식과 실무 활용 예시를 정리한다

·데이터베이스·기본개념, Database, 계층구조

계층 구조를 문자열로 저장하는 Path Enumeration

루트부터 현재 노드까지의 경로를 문자열에 이어붙여 저장하는 Path Enumeration의 동작 방식과 실무 활용 예시를 정리한다

·데이터베이스·기본개념, Database, 계층구조

격리 수준과 세 가지 이상 현상

SQL 표준이 정의한 4단계 격리 수준과 각 단계가 허용하는 이상 현상을 정리한다

·데이터베이스·기본개념, Database, 트랜잭션

행 추정치 1이 조인 플랜을 뒤집는 과정

통계에 없는 값의 선택도가 0이 되고, 1로 clamp된 추정치가 Nested Loop을 부르기까지

·데이터베이스·파고들기, Database, PostgreSQL, 테스트

실행계획 읽기 — 스캔, 조인, rows와 loops

EXPLAIN 출력에서 무엇을 먼저 보고 무엇을 무시해도 되는지 정리한다

·데이터베이스·기본개념, Database, PostgreSQL

배포할 때마다 목록 조회가 120초 걸렸다

기동 시 대량 적재가 auto-analyze 기준에 미달해 통계가 갱신되지 않았다

·데이터베이스·오답노트, Database, PostgreSQL, 성능

트랜잭션과 ACID

트랜잭션이 무엇을 보장하고 무엇을 보장하지 않는지 네 속성으로 정리한다

·데이터베이스·기본개념, Database, 트랜잭션

트랜잭션 격리 수준은 DBMS마다 다르게 동작한다

표준 정의만 외우면 실무에서 틀리는 이유와, 테스트로 직접 확인한 기록

·데이터베이스·파고들기, Database, 트랜잭션, 테스트