app.sqlite-shm 和 app.sqlite-wal 是什么文件?
这是 SQLite WAL 模式(Write-Ahead Logging)生成的临时文件,用来提高写入并发性能。
app.sqlite主数据库文件app.sqlite-walWAL 日志文件,所有写操作先写到这里app.sqlite-shm共享内存文件,SQLite 用来管理 WAL 索引、并发读写控制
为什么会出现?
当 SQLite 开启 WAL 模式 时(默认 python sqlite3 很可能会自动启用),写入不会直接写到 xx-faces.sqlite,而是先写到 .wal 文件,然后后台再 merge 回主库。
这样做的好处一是读写并发更好(读不阻塞写),二是写入性能更高。
是否可以删除?
⚠️ 不能随便删,除非你确定没有程序在写入数据库,并且 WAL 数据已经同步到主库。
如果你只是正常使用 SQLite,它们会自动清理。
如果你想手动清理(合并 wal 数据):
sqlite3 app.sqlite "PRAGMA wal_checkpoint(FULL);"或者把 WAL 模式关掉(不推荐,会降低性能):
sqlite3 app.sqlite "PRAGMA journal_mode=DELETE;"简单总结
- 这是 SQLite 的写日志和共享内存文件
- 不要在运行程序时删除
- 程序退出后通常会自动消失
- 大量写入时它会变大,属于正常