Molet

SQLite切换日志模式优化

Molet 运维技术 2022-11-19 399浏览 0

SQLite是一款轻型的数据库,SQLite 是一款轻量级数据库,是一个 关系型数据库管理系统,它包含在一个相对小的 C 库中,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它能够支持 Windows/Linux/Unix/Android/iOS 等等主流的操作系统,占用资源非常的低,因此在移动端也有很广泛的应用。 SQLIte有多种日志模式(具体见背景知识),在项目的开发迭代中,会遇见原本就版本app使用的SQLite日志模式是旧版默认的rpllback journal,当用户设备存在待恢复的.journal文件,新版本app的SQLite又需要将日志模式切换至wal时,我们就需要探究从默认日志模式rollback journal模式,直接切换至wal模式后是否安全呢?

背景知识

#define PAGER_JOURNALMODE_QUERY     (-1)  /* Query the value of journalmode */
#define PAGER_JOURNALMODE_DELETE      0   /* Commit by deleting journal file */

#define PAGER_JOURNALMODE_PERSIST     1   /* Commit by zeroing journal header */

#define PAGER_JOURNALMODE_OFF         2   /* Journal omitted.  */

#define PAGER_JOURNALMODE_TRUNCATE    3   /* Commit by truncating journal */

#define PAGER_JOURNALMODE_MEMORY      4   /* In-memory journal file */

#define PAGER_JOURNALMODE_WAL         5   /* Use write-ahead logging */

rollback journal:Atomic Commit In SQLite(地址:https://sqlite.org/atomiccommit.html) write-ahead logging:Write-Ahead Logging(地址:https://sqlite.org/wal.html) sqlite的锁模型:链接(地址:https://sqlite.org/lockingv3.html) sqlite的线程模型:链接(地址:https://sqlite.org/threadsafe.html)

Androidsqlite的线程模式

继续浏览有关 新闻 的文章
发表评论