Q&A 피드
SQLite 에서 shm wal 파일은 왜 나타났다 사라지지?
SQLite에서 .wal과 .shm 파일이 나타났다 사라지는 것은 보통 WAL(Write-Ahead Logging) 모드의 정상 동작입니다. 쓰기 중에는 변경 내용과 공유 인덱스를 위해 보조 파일이 생기고, 체크포인트가 완료되고 연결이 정리되면 작아지거나 사라질 수 있습니다.
기사 정보
SQLite에서 -wal 파일과 -shm 파일이 보였다가 안 보이는 이유는 대부분 WAL 모드의 정상 동작 때문입니다.
-wal 파일은 아직 본 DB 파일에 완전히 반영되지 않은 변경 내용을 잠시 저장하는 로그이고, -shm 파일은 여러 연결이 WAL 정보를 함께 참조할 때 쓰는 보조 파일입니다. 그래서 프로그램이 데이터를 쓰기 시작하면 생길 수 있고, 이후 체크포인트가 진행되어 내용이 본 파일로 반영되고 열려 있던 연결까지 정리되면 줄어들거나 사라질 수 있습니다.
즉, 파일이 생겼다가 사라지는 것 자체는 이상 현상이 아니라 SQLite가 안전하게 읽기/쓰기와 복구를 처리하는 과정이라고 보면 됩니다.
다만 다음처럼 보이면 점검이 필요합니다.
-wal파일 크기가 계속 커진다- 앱을 껐는데도 파일이 오래 남는다
- 백업한 DB가 최신 상태가 아닌 것처럼 보인다
database is locked같은 잠금 오류가 자주 난다
이럴 때는 대개 긴 읽기 트랜잭션, 오래 살아 있는 DB 연결, 체크포인트가 잘 안 되는 구조가 원인입니다.
주의할 점도 있습니다.
- DB를 사용 중일 때
-wal,-shm파일을 손으로 지우면 안 됩니다. - WAL 모드에서는 본 DB 파일만 복사하면 최신 변경분이 빠진 불완전 백업이 될 수 있습니다.
- 특히 동기화 폴더나 네트워크 드라이브에서는 SQLite WAL 파일이 더 헷갈리게 보일 수 있습니다.
정리하면, shm과 wal 파일이 나타났다 사라지는 것은 대부분 정상이며, 핵심은 파일의 존재 자체보다 왜 오래 남는지, 왜 계속 커지는지를 보는 것입니다.