SQLite3和多个进程

当多个进程访问一个sqlite数据库文件时,应该如何确保正确性?
首先,避免并发访问sqlite数据库文件.并发是sqlite的一个弱点,如果你有一个高度并发的应用程序,请考虑使用另一个数据库引擎.

如果您无法避免并发或丢弃sqlite,请将您的写入事务封装在BEGIN IMMEDIATE中; … 结束;. sqlite中的默认事务模式为DEFERRED,这意味着仅在第一次实际写入尝试时才获取锁定.使用IMMEDIATE事务,锁将立即获取,或者立即获得sqlITE_BUSY.当有人持有对数据库的锁定时,其他锁定尝试将导致sqlITE_BUSY.

处理sqlITE_BUSY是你自己决定的.对于许多应用程序,等待一秒或两秒,然后重试正常工作,在n次尝试失败后放弃.有sqlite3 API帮助者使这样很容易,例如sqlite3_busy_handler()和sqlite3_busy_timeout(),但它也可以手动完成.

您还可以使用操作系统级同步来获取数据库的互斥锁,或者使用操作系统层级的跨线程/进程间消息传递来在一个线程完成访问数据库时发出信号.

相关文章

安装 在Windows上安装SQLite。 访问官网下载下Precompliled Binaries for Windows的两个压缩包。 创建s...
一、安装 下载地址:http://www.sqlite.org/download.html 将Precompiled Binaries for Windows下的包下...
实例: 会员信息管理 功能:1.查看数据库 2.清空数据库 3.增加会员 4.删除会员 5.更新会员 6.查找会员  ...
关于SQLite SQLite是一个轻量的、跨平台的、开源的数据库引擎,它的在读写效率、消耗总量、延迟时间和整...