博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GRDB使用SQLite的WAL模式
阅读量:6180 次
发布时间:2019-06-21

本文共 535 字,大约阅读时间需要 1 分钟。

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积累数据太多。

转载地址:http://oebda.baihongyu.com/

你可能感兴趣的文章
重复枚举和不重复枚举
查看>>
支持metro style app 的框架已经出来了
查看>>
windows 10 自适应布局
查看>>
mybatis insertUseGeneratedKeys
查看>>
自动生成Makefile--autotools使用 - zheng_he_xiang的日志 - 网易博客
查看>>
BAT实现照片文件批量改名
查看>>
海量数据处理专题(六)——双层桶划分
查看>>
Senior Software Engineer – Search Relevance in China - A9
查看>>
原来OD 线程 在这里显示 囧啊
查看>>
A.1.4,6,7-控制结构(if else),循环结构(for,while,do while),循环结构(switch)
查看>>
ECSHOP之transport.js/run() error:'process_request' 未定义
查看>>
dp学习笔记4
查看>>
SetTimer 与回调函数
查看>>
一步一步学Linq to sql(三):增删查改
查看>>
[ubuntu] ubuntu13.04切换桌面/工作区的方法
查看>>
连接各种数据库
查看>>
T-Sql(一)简单语法
查看>>
事务与并发
查看>>
类程序Log4j Android
查看>>
游戏运营杂谈<-最关心的游戏运营数据指标分析
查看>>