这是 SQLite WAL 模式(Write-Ahead Logging)生成的临时文件,用来提高写入并发性能。

  • app.sqlite 主数据库文件
  • app.sqlite-wal WAL 日志文件,所有写操作先写到这里
  • 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 的写日志和共享内存文件
  • 不要在运行程序时删除
  • 程序退出后通常会自动消失
  • 大量写入时它会变大,属于正常

标签: sqlite

添加新评论