피드로 돌아가기![[🗄️DataBase] Database Transactions 底層到底做了什麼:從記憶體到磁碟](/_next/image?url=https%3A%2F%2Ftsewlmecqtvqphyhezcm.supabase.co%2Fstorage%2Fv1%2Fobject%2Fpublic%2Fthumbnails%2F7cdec5d2-1010-4869-bc4b-87ee4e208d64.webp%3F&w=3840&q=75)
Dev.toDatabase
원문 읽기
[🗄️DataBase] Database Transactions 底層到底做了什麼:從記憶體到磁碟
RAM-Disk 간 1,000배 속도 차이를 극복하는 WAL 기반 ACID 보장 아키텍처
AI 요약
Context
디스크 I/O의 물리적 한계로 인해 RAM 대비 최소 1,000배에서 최대 100,000배의 성능 격차가 발생함. 이를 해결하며 데이터의 영속성과 원자성을 보장해야 하는 Database Engine의 구조적 모순을 해결하는 것이 핵심 과제임.
Technical Solution
- Page Cache 도입을 통해 디스크 직접 접근을 최소화하고 RAM 내에서 데이터 수정 후 Dirty Page로 관리하는 구조 설계
- Sequential Write 방식의 WAL(Write-Ahead Log)을 적용하여 Random Write의 성능 저하를 회피하고 Commit 시점의 영속성 확보
- Background Writer를 통한 비동기식 Dirty Page 플러싱으로 사용자 쿼리 응답 시간과 디스크 쓰기 부하를 분리
- Checkpoint 메커니즘을 도입하여 WAL 로그의 무한 팽창을 방지하고 장애 복구 시 Replay 범위를 최적화
- ARIES 알고리즘 기반의 Analysis-Redo-Undo 프로세스를 통해 Crash 발생 시 데이터 일관성을 자동 복구하는 파이프라인 구축
실천 포인트
- Application의 Flush와 DB의 Commit 차이를 이해하고 비즈니스 원자성 범위 설정 - 대량의 데이터 업데이트 시 Checkpoint 부하 및 WAL 로그 생성량 모니터링 - 장애 복구 시간(RTO) 단축을 위한 적절한 Checkpoint 주기 설정 검토 - Disk I/O 병목 해결을 위해 Sequential Write 구조의 로그 시스템 도입 고려