GRDB使用SQLite的WAL模式
WAL全称是Write Ahead Logging,它是SQLite中实现原子事务的一种机制。该模式是从SQLite 3.7.0版本引入的。再此之前,SQLite使用Rollback Journal机制实现原子事务。在Rollback Journal机制中,当需要修改数据时,先把被修改的数据备份出来,然后把数据库的数据修改。如果事务成功,就把备份数据删掉;如果事务失败,则恢复备份数据。这个机制的缺点是读写频繁,并且写的时候,不能读取。
而WAL模式的工作机制如同其名称一样,在写入数据库之前,先写入一个日志文件。这个日志文件名为wal的文件。当事务成功,修改的内容会保留在这个文件中。当事务失败,则从这个文件中删除。当wal文件的记录积累到一定数量,则一次性写入数据库中。如果读取数据库,则先从wal中读取,然后再读取数据库文件。这样,写操作不会影响读操作,从而提高效率。
GRDB直接支持WAL模式。当开发者使用DatabasePool建立数据库连接,则默认使用WAL模式;如果使用DatabaseQueue建立连接,则不使用该模式。如果WAL中的积累数据太多时候,写入数据库会造成数据库性能下降,所以避免WAL积累数据太多。

GRDB使用SQLite的WAL模式相关推荐

  1. sqlite的wal模式

    原文:https://www.sqlite.org/wal.html 预览 SQLite实现原子提交和回滚的默认方法是回滚日志.从3.7.0版本(2010-07-21)开始,可以使用一个新的" ...

  2. WAL模式 Android,SQLite 数据库 WAL 工作模式原理简介

    闪存 对象序列化系列 数据序列化系列(待更) <Android 数据序列化之 JSON> <Android 数据序列化之 Protocol Buffer 使用> <And ...

  3. android wal模式,WCDB 的 WAL 模式和异步 Checkpoint

    WAL 模式是 SQLite 3.7.0 版本推出的改进写性能和并发性的功能,至今已经7年多了,但由于WAL是默认关闭的,可能有相当多的应用并没有用上,仍然使用性能较差的传统模式. 微信 APP 开启 ...

  4. WAL模式 Android,Android使用SQLITE3 WAL模式

    sqlite是支持writeaheadlogging(WAL)模式的,开启WAL模式可以提高写入数据库的速度,读和写之间不会阻塞,但是写与写之间依然是阻塞的,但是如果使用默认的TRUNC sqlite ...

  5. 数据库 wal 模式 分析

    对于以下错误的解决思路 看我的另外一篇文章 https://blog.csdn.net/tianxuhong/article/details/78752357 android.database.sql ...

  6. sqlite 怎么开启wal机制

    Sqlite在多线程下的使用方法及注意的事项 一Sqlite的三种模式 1.      单线程,这种模式下,没有进行互斥,多线程使用不安全 2.      多线程,这种模式下,在多线程中使用单个数据库 ...

  7. CoreData数据库探索

    CoreData是什么 Core Data 是苹果公司提供的一个对象-关系映射框架(Object-Relational Mapping,ORM),用于管理应用程序的数据模型.Core Data 提供了 ...

  8. Swift SQLite ORM 框架 - GRDB.swift 使用

    文章目录 简介 创建连接数据库 执行SQL语句操作 创建表 创建索引 删除索引 插入 更新 查询 删除 使用 API 操作 创建存储模型 创建表 插入 查询 更新 删除 迁移 创建迁移对象 查询应用迁 ...

  9. SQLite WAL 机制探索

    什么是WAL机制 SQLite 的 WAL(Write-Ahead Logging)机制是一种高效的事务日志机制,用于将修改操作写入一个独立的 .sqlite-wal 文件中,而不是直接写入主数据库文 ...

最新文章

  1. linux系统开机静态分配ip地址
  2. 利用开区间覆盖的约简给出$\bf{Lindelöf}$覆盖定理的一个新证明
  3. 怎么让经纬度在脑子里不串门?
  4. python 全栈开发,Day82(点赞和踩灭,用户评论)
  5. mysql-mmm高可用架构
  6. Java虚拟机和Dalvik(android)虚拟机的区别
  7. C++ Primer 小贴士之第一二章
  8. [渝粤教育] 西南科技大学 投资经济学 在线考试复习资料(2)
  9. oracle π,plsql 计算π
  10. 计算机理论python字符串作业_[Python基础 ] Day_07_作业参考答案
  11. 苹果iOS开发深入浅出Cocoa之类与对象
  12. python笔记3:依次输入3个数排序打印(升序)
  13. [强烈推荐]Oracle:只有rman备份(数据,参数,日志,控制文件全丢失)的恢复
  14. 2020-08-18 每日一句
  15. 为什么你搜不到想要的小程序?【附带最全小程序名单】
  16. php mysql 更新多条数据_php update 多条数据库
  17. Kaggle实战之 房价预测案例
  18. NLP与ChatGPT的碰撞:大模型和小模型联合发力
  19. react webpack配置组件路径引用 @与自定义
  20. java连接MQTT服务器(Springboot整合MQTT)

热门文章

  1. [转]VC获取各类指针
  2. HSQLDB两条基本命令
  3. vimrepress
  4. eclipse的菜单栏消失问题解决
  5. 安装VM虚拟机提示 尝试创建目录 C:\Public\documents\SharedVirtual Machines 时发生错误解决方法
  6. Thinkpad T420 指纹开机 win10 解决方案
  7. 解决ajax的status=0问题
  8. PHP输出中文乱码的解决方法
  9. 记一次用pip安装docker-compose报错及解决方法
  10. HTML输入 - 名称与ID