当前位置:  开发笔记 > 数据库 > 正文

SQLite3和多个进程

如何解决《SQLite3和多个进程》经验,为你挑选了1个好方法。

当多个进程访问单个SQLite数据库文件时,如何确保正确性?



1> laalto..:

首先,避免并发访问sqlite数据库文件.并发是sqlite的弱点之一,如果你有一个高度并发的应用程序,请考虑使用另一个数据库引擎.

如果您无法避免并发或删除sqlite,请将您的写入事务包装在BEGIN IMMEDIATE;...中END;.sqlite中的默认事务模式是DEFERRED指仅在第一次实际写入尝试时获取锁定.通过IMMEDIATE事务,可以SQLITE_BUSY立即获取锁定,或者立即获取锁定.当有人持有对数据库的锁定时,将导致其他锁定尝试SQLITE_BUSY.

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

您还可以使用操作系统级别同步来获取数据库的互斥锁,或使用操作系统级别的线程间/进程间消息传递来指示一个线程何时完成访问数据库.

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有