数据库Sqlite-WAL模式
来源:互联网 发布:dotacoko淘宝 编辑:程序博客网 时间:2024/05/22 20:09
这里简单的记录下WAL模式的特点吧,是在sqlite 3.7.0之后出现的。WAL全称Write Ahead Log,其实就是预写日志。是实现事务原子提交的一种方法。
什么是事务的原子提交,事务的原子性 :事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做。就比如说我开启一个事务
然后做了插入操作,插入了很多数据,但是由于断电了,电脑突然关机,则会发生事务的回滚,也就是说所有的操作都撤销。
WAL模式其实就是当事务对数据库进行修改的时候,会将修改的数据写到WAL文件中,不会直接的写到数据库中,如果事务失败了,那么久撤销
修改,如果成功,就会在文件达到一定大小定期的时候回写入到数据库,因为WAL文件过大会去影响事务的速度,把WAL文件的内容更新到数据库文件的过程叫做一次CheckPoint
摘抄网络:使用WAL模式时,改写操作是附加(append)到WAL文件,而不改动数据库文件,因此数据库文件可以被同时读取。当执行checkpoint操作时,WAL文件的内容会被写回数据库文件。当WAL文件达到SQLITE_DEFAULT_WAL_AUTOCHECKPOINT(默认值是1000)页(默认大小是1KB)时,会自动使用当前COMMIT的线程来执行checkpoint操作。也可以关闭自动checkpoint,改为手动定期checkpoint。
对数据库文件的修改被追加到单独的WAL文件中。当一条记录被追加到WAL文件后,标志着一次commit的结束。因此一次commit不必对数据库文件进行操作,当正在进行写操作时,可以同时进行读操作。多个事务的内容可以追加到一个WAL文件的末尾。
WAL文件会在数据库的第一个连接建立时创建,在最后一个连接释放时删除。
当一个读操作发生在WAL模式的数据库上时,会首先找到WAL文件中最后一次提交,叫做"end mark"。每一个事务都有的end point。
参考资料:https://www.cnblogs.com/huahuahu/p/sqlite-zhiWAL-mo-shi.html
http://blog.csdn.net/zearot/article/details/51039593
- 数据库Sqlite-WAL模式
- GRDB使用SQLite的WAL模式
- Sqlite DatebaseBrowser不能打开wal的数据库
- 多线程操作数据库--WAL模式--一写多读并行
- SQLite的WAL机制
- SQLite的WAL机制
- SQLite的WAL机制
- SQLite的WAL机制
- SQLite的WAL机制
- SQLite的WAL机制
- SQLite的WAL机制
- SQLite的WAL机制
- SQLite-WAL原理
- SQLite分析之WAL机制
- sqlite 怎么开启wal机制
- sqlite3 wal模式
- Sqlite3 WAL模式
- Sqlite3 WAL模式
- BZOJ3828: [Poi2014]Criminals
- Poj-1696 (叉积)
- Mac下安装SpringBoot的CLI(命令行界面)
- BZOJ3829: [Poi2014]FarmCraft
- Poj-3304 (叉积判断直线是否过线段)
- 数据库Sqlite-WAL模式
- go:chan分为阻塞和非阻塞
- [学习笔记]Python_字符串,元祖,字典
- 计算几何笔记
- 数字图像处理matlab版第二章
- 【拜小白opencv】40-形态学滤波5——形态学梯度(基本梯度、内部梯度、外部梯度、方向梯度)
- 谁是医疗AI领域的第一梯队?
- bzoj 4513: [Sdoi2016]储能表 数位dp
- 2019年《自然》迎新子刊:机器智能、新陈代谢和综述物理