Android SQLite -journal、-wal、-shm

在创建数据库时,不仅会生成xxx.db数据库文件,而且还会生成xxx.db-journal。这个-journal文件是用来干嘛的?其实这个文件是sqlite用来实现原子提交和回滚功能的。如果没有这个文件,SQlite将无法回滚未完成的事务,如果在事务中间发生崩溃或者掉电,那么整个数据库就有可能损坏。

-journal——回滚日志

回滚日志通常位于数据库文件所在的目录,一般在事务开始时创建,事务结束时删除(这取决于日志模式)

日志模式:

  • DELETE:默认的日志模式,一般在事务开始时创建回滚日志,事务结束时删除回滚日志。
  • PERSIST:事务结束时不删除回滚日志,而是在日志文件头部覆写0,这样也可以达到删除文件同样的效果,却减少了反复创建删除回滚日志的磁盘开销。
  • MEMORY:将回滚日志存储在内存而不是磁盘中,但因为在磁盘中没有用于恢复的文件,如果在事务中间发生崩溃或者掉电,那么整个数据库就有可能损坏。
  • OFF:禁用SQLite原子提交和回滚功能。

-wal——预写日志

作用与-journal文件一样,用于在WAL模式下操作。

当数据库连接首次打开时,wal文件就会被创建。当最后一次数据库连接被正常关闭时,wal文件就会被删除。如果最后一次数据库连接没有正常关闭,wal文件会保存下来,直到下一次打开数据库时才会自动删除。

shm——共享内存文件

共享内存文件用于提供一块共享内存给多个进程在WAL模式中访问相同的数据库。

参考资料

Temporary Files Used By SQLite

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知用改创

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值