SQLite - Journal Management

정현철·2023년 6월 4일
0

Database Project

목록 보기
7/7

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)

0개의 댓글