SQLite3和多个进程

SQLite3和多个进程,第1张

概述当多个进程访问一个SQLite数据库文件时,应该如何确保正确性? 首先,避免并发访问sqlite数据库文件.并发是sqlite的一个弱点,如果你有一个高度并发的应用程序,请考虑使用另一个数据库引擎. 如果您无法避免并发或丢弃sqlite,请将您的写入事务封装在BEGIN IMMEDIATE中; … 结束;. sqlite中的默认事务模式为DEFERRED,这意味着仅在第一次实际写入尝试时才获取锁定 当多个进程访问一个sqlite数据库文件时,应该如何确保正确性? 首先,避免并发访问sqlite数据库文件.并发是sqlite的一个弱点,如果你有一个高度并发的应用程序,请考虑使用另一个数据库引擎.

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

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

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

总结

以上是内存溢出为你收集整理的SQLite3和多个进程全部内容,希望文章能够帮你解决SQLite3和多个进程所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1161096.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存