
데이터베이스 저장과 내부 접근 구조
데이터베이스는 단순히 “데이터를 저장한다”는 수준이 아니다.
실제로는 디스크 깊숙한 곳의 물리 구조를 효율적으로 활용해 빠르게 읽고 쓰는 기술을 의미한다.
이번 글에서는 그 내부 구조를, 가능한 직관적으로 풀어서 설명한다.
1. 저장장치의 기본 개념
데이터베이스가 저장되는 저장매체는 크게 두 종류다.
전통적 하드디스크(HDD)
회전하는 원판에 데이터를 기록한다. 구조는 다음과 같다.
- 트랙(track): 원판 위의 동심원
- 섹터(sector): 트랙을 잘라 만든 조각
- 헤드(head): 트랙과 섹터의 위치로 이동해 데이터를 읽는 장치
- 실린더(cylinder): 같은 반지름 위치의 트랙들을 세로로 본 집합
이 구조 안에서 DB의 모든 페이지가 실제로 저장된다.
SSD · 플래시 메모리
반도체 기반의 비휘발성 장치다.
- 속도가 빠르고 내구성이 높다
- 소음·발열·기계적 움직임이 없다
- 다만 용량 대비 가격은 높고, 쓰기 횟수의 제한이 있다
DBMS는 두 장치를 모두 “페이지 기반 저장장치”로 다룬다.
2. 디스크 접근 시간: 성능을 결정하는 3단계
DB 성능은 결국 디스크 → 메모리로 데이터를 얼마나 빠르게 불러오느냐에 달려있다.
이때 걸리는 시간이 세 가지로 나뉜다.
① 탐색 시간(Seek Time)
헤드가 필요한 트랙까지 이동하는 시간.
트랙이 멀수록 오래 걸린다.
② 회전 지연 시간(Rotational Delay)
트랙을 찾았더라도, 섹터가 헤드 아래로 올 때까지 원판이 돌기를 기다려야 한다.
이 기다림이 회전 지연이다.
③ 전송 시간(Transfer Time)
섹터가 위치에 오면 데이터를 읽어 메모리로 전송하는 시간이다.
전송량(페이지 크기)에 비례한다.
총 접근 시간 = 탐색 + 회전 + 전송
DBMS가 자꾸 인덱스를 만들고, 페이지 단위를 최적화하는 이유가 바로 이 시간 때문이다.
3. 데이터베이스 내부 접근 과정
SQL 한 줄이 실제 동작하는 과정
사용자가 SELECT를 실행하면 내부에서는 다음 절차가 수행된다.
- 사용자가 SQL 요청
- DBMS가 요청을 분석하고 실행 계획 수립
- 파일관리자(File Manager) 에게 필요한 페이지 요청
- 파일관리자가 디스크관리자(Disk Manager) 를 호출
- 디스크관리자가 실제 디스크에서 페이지를 읽어 메모리로 전달
- 파일관리자가 페이지 내부에서 찾고 싶은 레코드 위치(RID) 를 찾음
- DBMS가 결과를 사용자에게 돌려준다
여기서 파일관리자와 디스크관리자의 역할 분리가 매우 중요하다.
4. 디스크관리자의 역할
디스크관리자는 말 그대로 물리적 I/O의 모든 책임자다.
- 페이지 단위로 필요한 블록을 찾아 디스크에서 메모리로 가져온다
- 각 테이블의 시작 주소를 기록한 디스크 디렉터리를 관리한다
→ 덕분에 불필요한 트랙 탐색을 크게 줄인다
디스크관리자는 저장장치와 가장 가깝게 붙어있는 계층이다.
5. 파일관리자의 역할
파일관리자는 페이지 내부의 실제 레코드를 찾는 관리자다.
핵심은 RID(Record ID) 라는 주소표다.
예: #5-8
→ 5번 페이지의 8번째 레코드
파일관리자는 페이지 전체를 훑지 않고 RID로 바로 가서 원하는 레코드를 꺼내온다.
즉,
- 디스크관리자 → “큰 덩어리” 페이지 처리
- 파일관리자 → “작은 덩어리” 레코드 처리
이렇게 역할이 나뉜다.
6. 클러스터링(Clustering) — 읽기 성능을 위한 정렬
파일을 오래 쓰면 “조각 모음”이 필요했던 이유를 떠올리면 된다.
데이터가 여기저기 흩어져 있으면 읽기 성능이 떨어진다.
데이터베이스에서도 똑같다.
클러스터링은
논리적 순서(사용자가 보는 순서)와 물리적 순서(디스크에 저장된 순서)를 최대한 일치시키는 작업이다.
예: 성별이 남자인 사람만 자주 조회하는 서비스
→ 남성 데이터를 모두 붙여 저장해놓으면 디스크 헤드가 거의 안 움직인다.
단, 전체 데이터를 한꺼번에 읽는 작업에는 큰 도움은 없다.
주로 범위 조회, 특정 조건 조회에 효과가 크다.
핵심 요약
- 데이터는 페이지 단위로 저장·전송된다.
- 접근 시간은 탐색·회전·전송 3단계로 구성된다.
- DBMS 내부에서는 파일관리자·디스크관리자가 서로 역할을 나눠 고속 접근을 지원한다.
- 클러스터링은 데이터 물리 배치를 최적화하는 중요한 성능 기술이다.
단어장 (한자·영단어·어원)
디스크(圓板 개념) / disk
그리스어 diskos(원판)
트랙(track)
어원: track(길, 흔적) → 회전 경로 의미 확장
섹터(區劃) / sector
區(구역 구), 劃(그을 획)
어원: 라틴어 secare(자르다) → 원판을 자른 조각
실린더(圓筒) / cylinder
筒(통 통)
어원: 그리스어 kylindros(굴러가는 원통)
검색시간(檢索時間) / access time
檢(살필 검), 索(찾을 색), 時(때 시), 間(사이 간)
access: ad-(toward) + cedere(가다)
레코드(記錄單位) / record
記(기록 기), 錄(기록 록)
어원: recordari(되새기다)
클러스터링(集合化) / clustering
集(모을 집), 合(합할 합), 化(될 화)
cluster: 중세 영어 clustre(덩어리)
파일관리자(管理者) / file manager
管(주관 관), 理(다스릴 리), 者(사람 자)
manager: manus(손) + agere(이끌다)