xajh32y 发表于 2016-11-30 10:49:24

android sqlite db-journal文件产生原因及说明 .

  今天在android中将sqlite的数据库文件生成在SD卡上的过程中,发现生成的.db文件的旁边
  生成了一个大小为0的与数据库文件同名的.db-journal文件,不明白此文件的用途,于是
  google了sqlite的官方文档,发现该文件的用途如下:
  该文件是sqlite的一个临时的日志文件,主要用于sqlite事务回滚机制,在事务开始时产生,
  在事务结束时删除;当程序发生崩溃或者系统断电时该文件将留在磁盘上,以便下次程序运行
  时进行事务回滚。
  但是我创建数据库时将事务结束了,同时程序也没有崩溃,为什么还是会在磁盘上产生
  .db-journal文件呢?
  深入研究,发现这是sqlite生成日志文件的不同模式造成的,在android采用的这种模式下,
  .db-journal文件是永久的留在磁盘上不会被自动清除的,如果没有发生事务回滚那么.db-journal
  文件的大小为0,这样就避免了每次生成和删除.db-journal文件的开销。
  到此,所有的疑惑解开了。

  今天在android中将sqlite的数据库文件生成在SD卡上的过程中,发现生成的.db文件的旁边
  生成了一个大小为0的与数据库文件同名的.db-journal文件,不明白此文件的用途,于是
  google了sqlite的官方文档,发现该文件的用途如下:
  该文件是sqlite的一个临时的日志文件,主要用于sqlite事务回滚机制,在事务开始时产生,
  在事务结束时删除;当程序发生崩溃或者系统断电时该文件将留在磁盘上,以便下次程序运行
  时进行事务回滚。
  但是我创建数据库时将事务结束了,同时程序也没有崩溃,为什么还是会在磁盘上产生
  .db-journal文件呢?
  深入研究,发现这是sqlite生成日志文件的不同模式造成的,在android采用的这种模式下,
  .db-journal文件是永久的留在磁盘上不会被自动清除的,如果没有发生事务回滚那么.db-journal
  文件的大小为0,这样就避免了每次生成和删除.db-journal文件的开销。
  到此,所有的疑惑解开了。
页: [1]
查看完整版本: android sqlite db-journal文件产生原因及说明 .