Journal은 데이터베이스를 복구하는 데 사용되는 정보들의 저장소를 말한다. SQLite에서는 single journal file per database(database.db-journal이라는 파일이 생성된다)를 생성하는데, 오직 Rollback(redo 아니고 undo)만(wal mode는 좀 다름 뒤에 설명하겠음) 지원한다.
Journal modes
- DELETE: Transaction이 commit되면 log file이 삭제됨.
- MEMORY: Rollback Journal이 메모리에 keep되고, DiskIO에 영향을 주지 않는다. 또한 commit되면 0 size로 truncated된다. 그래서 DBMS 장애가 나면 데이터 유실 가능성이 있다.
- OFF: not using log
- PERSIST: delete나 truncate 대신, log file header를 0으로 채운다. 이게 space를 좀 더 소비하긴 하지만 DELETE나 TRUNCATE보다 좀 더 빠르다.
- TRUNCATE: Commit되면, 0 size로 truncated된다. DELETE보다는 빠르다.
- WAL: 일단 log에 먼저 쓰고, checkpoint에서 flush하는, 위 journaling mode와는 완전 다른 방식이다.(redo logging)