DBMS 내부 구조

SQL 한 줄은 엔진 안에서 계획, 페이지, 로그로 갈라진다

DBMS는 SQL을 바로 파일에 쓰지 않는다. 문법과 권한을 확인하고, 실행 계획을 고른 뒤, 버퍼 풀과 인덱스를 거쳐 트랜잭션 로그로 복구 가능성을 남긴 다음 결과를 돌려준다.

클라이언트 요청 SELECT name FROM member WHERE id = 42; 응답 행 반환
시스템 카탈로그

테이블 정의와 통계

컬럼, 인덱스, 제약조건, 행 수 추정치가 계획 선택에 들어간다.
권한 정보

사용자와 역할 확인

조회 가능한 객체인지 먼저 걸러 잘못된 접근을 막는다.
동시성 상태

락과 격리 수준

같은 데이터를 읽고 쓰는 트랜잭션 사이의 순서를 조정한다.
01 문법과 의미 해석 SQL 토큰을 파싱하고 테이블, 컬럼, 함수 이름이 맞는지 확인한다.
02 실행 계획 선택 통계와 인덱스를 보고 전체 스캔, 인덱스 탐색, 조인 순서를 고른다.
03 페이지 접근 버퍼 풀에서 페이지를 찾고, 없으면 디스크에서 읽어 올린다.
04 결과와 로그 정리 읽기 결과를 조립하고, 변경 작업이면 로그와 잠금 상태를 맞춘다.
Buffer Pool 메모리 페이지 캐시 자주 쓰는 데이터 페이지를 메모리에 잡아 디스크 접근을 줄인다.
Index 탐색 경로 단축 조건에 맞는 행 위치를 빠르게 찾지만 변경 비용도 함께 만든다.
Data Pages 실제 행 저장 테이블 행은 페이지 단위로 읽히고 쓰이며 파일에 배치된다.
WAL Log 복구 가능한 기록 데이터 파일보다 로그를 먼저 남겨 장애 뒤에도 일관성을 회복한다.
Lock Table 충돌 조정 동시에 들어온 읽기와 쓰기의 충돌 범위를 추적한다.
질의 처리기는 계획을 고른다 같은 SQL도 통계, 인덱스, 조인 순서에 따라 비용이 크게 달라진다.
저장 관리자는 페이지를 다룬다 행 단위로 생각해도 실제 입출력은 버퍼와 페이지 단위로 움직인다.
트랜잭션 관리자는 약속을 지킨다 원자성, 격리성, 복구 가능성이 성능 비용과 함께 설계된다.