SQLite의 WAL 모드: 내구성과 성능 간의 절충
2025-08-24
SQLite의 WAL(Write-Ahead Log) 모드는 더 높은 쓰기 처리량을 위해 자주 사용되지만, 기본 저널 모드와 비교하여 데이터 내구성이 저하됩니다. `synchronous` pragma는 fsync가 호출되는 빈도를 제어하며, 기본값은 NORMAL입니다. NORMAL 모드에서는 WAL 파일이 각 체크포인트 전에 동기화되고 데이터베이스 파일은 각 체크포인트 후에 동기화되지만, 대부분의 트랜잭션에서는 동기화 작업이 수행되지 않습니다. 내구성이 중요하지 않은 애플리케이션에서는 NORMAL로 충분합니다. 정전 시에도 내구성을 보장하려면 `synchronous=FULL`을 사용하면 각 트랜잭션 커밋 후에 WAL 파일 동기화가 추가되어 내구성이 향상되지만, 쓰기 속도가 저하됩니다. SurrealDB가 벤치마크 성능을 위해 내구성을 희생하고 있다는 우려를 받아 이 설명은 SQLite의 접근 방식을 명확히 합니다.
(avi.im)