我已经阅读了一些有关多线程环境中 SQLite 的相关主题,但我找不到明确的说法,所以请原谅我再次提出这个主题。
我需要从多个线程访问应用程序的数据库以执行更新语句。数据库本身可以是 SQLite 或 MySQL,具体取决于用户的选择。对于 MySQL 处理程序,我使用 tomcat-jdbc 库实现了一个连接池。现在我正在寻找 SQLite 处理程序的最佳方法,因为正常的连接池不应该工作,因为 SQLite 一次只支持一个写入连接,从而锁定整个数据库。
我应该继续让所有线程使用相同的连接一个接一个(通过同步连接?)还是应该使用仅保存连接的已存在的 tomcat 库创建一个连接池?具有一个连接的连接池是否可能过大?
由于它是单文件嵌入式数据库,池化几乎没有什么好处。
https://web.archive.org/web/20130410192252/http://sqlite.phxsoftware.com/forums/p/682/3034.aspx https://web.archive.org/web/20130410192252/http://sqlite.phxsoftware.com/forums/p/682/3034.aspx
由于原始网站已关闭,我将提供摘要:
我已经实现了池化并使用池化了 1000 个命令
连接和汇集速度更接近
单连接速度。
Many non-pooled connections : 2875.0 ms
Many pooled connections : 93.8 ms
Pooled with reset : 546.9 ms
One Connection : 46.9 ms
所以共识是,池化并不是很有好处。
http://www.sqlite.org/faq.html#q5 http://www.sqlite.org/faq.html#q5
http://www.sqlite.org/threadsafe.html http://www.sqlite.org/threadsafe.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)