DBMS Architecture

DBMS는 SQL 요청을 계획, 저장 접근, 동시성·복구 처리로 나눠 실행한다

사용자는 SQL 한 문장을 보내지만 내부에서는 질의 처리기, 저장 시스템, 트랜잭션 관리자가 카탈로그와 로그를 참조하며 협력합니다. 실제 제품마다 모듈 이름과 경계는 달라도 책임은 대체로 이 흐름으로 나뉩니다.

사용자 SQL
SELECT name
FROM products
WHERE price > 500000;
Query Processor

SQL을 실행 가능한 계획으로 바꾼다

parse · bind: 문법과 객체 참조 확인 optimize: 인덱스와 조인 순서 선택 execute: 계획을 저장 시스템 호출로 변환
Storage System

페이지와 인덱스를 실제로 읽고 쓴다

buffer: 자주 쓰는 페이지를 메모리에 보관 file: 레코드와 페이지의 물리 배치 관리 index: 탐색 비용을 줄이는 접근 경로 제공
Transaction Manager

동시 실행과 장애 상황에서 일관성을 지킨다

lock · MVCC: 충돌과 격리 수준 관리 log: redo와 undo의 근거 기록 recovery: 장애 후 일관된 상태로 복구
Catalog & Stats 스키마, 권한, 통계

질의 처리기가 객체 존재 여부와 접근 경로 비용을 판단할 때 참조한다.

Data Files 페이지와 레코드

사용자 데이터가 파일, 블록, 페이지 단위로 저장되는 실제 대상이다.

Log Files 확정과 되돌림의 근거

커밋된 변경은 다시 살리고, 미완료 변경은 되돌리는 복구 기준이 된다.

선언형 SQL 사용자는 무엇을 원한다고 말한다

어떤 인덱스를 쓰고 어떤 순서로 읽을지는 DBMS가 실행 계획으로 결정한다.

성능 느린 I/O를 줄이는 구조가 핵심이다

버퍼와 인덱스, 통계 정보가 같은 SQL의 실행 시간을 크게 바꾼다.

안전성 트랜잭션은 성능과 별개의 안전장치다

동시에 실행되거나 장애가 나도 데이터가 깨지지 않도록 제어한다.