SQLite3 --- sync同步机制
Sqlite3同步机制
模式设置
- PRAGMA synchronous = FULL; (2)
- PRAGMA synchronous = NORMAL; (1)
- PRAGMA synchronous = OFF; (0)
参数含义
当synchronous设置为FULL (2), SQLite数据库引擎在紧急时刻会暂停以确定数据已经写入磁盘。这使系统崩溃或电源出问题时能确保数据库在重起后不会损坏。FULL synchronous很安全但很慢。
当synchronous设置为NORMAL, SQLite数据库引擎在大部分紧急时刻会暂停,但不像FULL模式下那么频繁。 NORMAL模式下有很小的几率(但不是不存在)发生电源故障导致数据库损坏的情况。但实际上,在这种情况 下很可能你的硬盘已经不能使用,或者发生了其他的不可恢复的硬件错误。
synchronous 设置为OFF (0)时,SQLite在传递数据给系统以后直接继续而不暂停。若运行SQLite的应用程序崩溃, 数据不会损伤,但在系统崩溃或写入数据时意外断电的情况下数据库可能会损坏。另一方面,在synchronous OFF时 一些操作可能会快50倍甚至更多。在SQLite 2中,缺省值为NORMAL.而在3中修改为FULL。
sync拓展
数据库为了执行备份,备份文件依赖于写磁盘,然后才会写到数据库文件磁盘中。关键在于这里的写磁盘,都是调用系统的write接口,绝大部分都是直接写缓冲区的,只有调用sync才会将缓冲区中的数据flush到磁盘。所以在write,sync,再wirte再sync的过程中,掉电后是否能恢复数据,依赖于sync是否有真正执行。从这个角度看,FULL和NORMAL的区别,似乎就只有sync调用的频率,FULL按照多人的意见是一个transaction一个sync,而NORMAL是多个transactions调一个sync。
SQLite3 --- sync同步机制相关推荐
- 多线程之旅之四——浅谈内存模型和用户态同步机制
用户态下有两种同步结构的 volatile construct: 在简单数据类型上原子性的读或者写操作 interlocked construct:在简单数据类型上原子性的读和写操作 (在这里还 ...
- Golang的协程(goroutine)和同步机制
1.协程介绍 进程和线程都是由操作系统内核进行调度,有 CPU 时间片的概念,进行抢占式调度. 协程是用户级的线程,对内核是透明的,系统并不知道协程的存在,并且协程是非 ...
- Redis 数据同步机制分析
Redis的主从同步机制可以确保redis的master和slave之间的数据同步.按照同步内容的多少可以分为全同步和部分同步:按照同步的时机可以分为slave刚启动时的初始化同步和正常运行过程中的数 ...
- java底层机制_Java同步机制的底层实现
在多线程编程中我们会遇到很多需要使用线程同步机制去解决的并发问题,而这些同步机制就是多线程编程中影响正确性和运行效率的重中之重.这不禁让我感到好奇,这些同步机制是如何实现的呢?好奇心是进步的源泉,就让 ...
- 线程的互斥与同步机制
同个人博客:http://tsundere-x.top/ 一.互斥 为何需要引入互斥机制? 当多个线程对同一数据并发读写(至少有一个线程执行写操作)时,这种情形被称为竞争.竞争会导致数据读或写的不确定 ...
- ExoPlayer播放器剖析(六)ExoPlayer同步机制分析
关联博客 ExoPlayer播放器剖析(一)进入ExoPlayer的世界 ExoPlayer播放器剖析(二)编写exoplayer的demo ExoPlayer播放器剖析(三)流程分析-从build到 ...
- 游戏中的网络同步机制——Lockstep(转载)
原文转自http://bindog.github.io/blog/2015/03/10/synchronization-in-multiplayer-networked-game-lockstep 0 ...
- FastDFS文件同步机制分析
FastDFS文件同步机制 一.tracker server目录及文件结构 二.storage server目录及文件结构 三.FastDFS文件同步 3.1.同步日志所在目录 3.2.binlog格 ...
- 深入理解Android音视频同步机制(二)ExoPlayer的avsync逻辑
深入理解Android音视频同步机制(一)概述 深入理解Android音视频同步机制(二)ExoPlayer的avsync逻辑 深入理解Android音视频同步机制(三)NuPlayer的avsync ...
最新文章
- Dockerfile 入门看这篇就够了
- 加速电子化报销费控服务,易快报完成1500万美元B轮融资
- Tushare的安装
- for、for / in循环
- Springboot mybatis逆向工程org.springframework.beans.factory.BeanCreationException: Error creating bean错误
- 左神算法:用递归函数和栈逆序一个栈(Java版)
- 洛谷 P2746 [USACO5.3]校园网Network of Schools (Tarjan,SCC缩点,DAG性质)
- [vs2010 project] CppUnit快速入门
- Linux协议栈:基于ping流程窥探Linux网络子系统,及常用优化方法
- mmseg 同义词分析器 SolrSynonymParser
- 报错ClassNotFoundException:org.springframework.cloud.client.loadbalancer.LoadBalancerClientsProperties
- 解决“/bin/bash^M: bad interpreter: No such file or directory”
- 小甲鱼python作业百度文库_【小甲鱼python课后题.doc】下载 - 面包树
- Sqlserver2012卸载
- Ubuntu18.04 下载与安装(阿里云官方镜像站)
- Preparing transaction:done Verifying transaction:failed RemoveError:‘requests‘ is a dependency of **
- macOS 10.14配置APUE环境
- 盘点2020年受影响最大的十大行业和10大职业
- kali之破解隔壁老王wifi
- nth_element详解
热门文章
- 调用外接摄像头每隔0.05秒拍一次照的MATLAB程序
- 大学计算机专业表决心,北京工商大学计算机学院
- Windows XP SP2安装序列号
- 不喜欢 D 和 C++,程序员将 58000 行代码移植到 Jai 语言?
- 【持续更新】分享100多个好用的网站及推荐理由 SMARK
- EMM Cause #40 No EPS bearer context activated介绍
- WebGL 3d模型优化实战
- java-net-php-python-46jspm制衣厂后整管理系统计算机毕业设计程序
- 关于linux下的库文件
- 天下数据推荐六款实用的服务器管理软件