我已经阅读了几个有关SQLite在多线程环境中的相关线程,但我找不到一个明确的声明,所以请原谅我再次提出这个话题。
我需要从多个线程访问应用程序的数据库来执行更新语句。数据库本身可以是SQLite或MySQL,这取决于用户的选择。对于MySQL处理程序,我使用tomcat-jdbc库实现了一个连接池。现在我正在寻找SQLite处理程序的最佳方法,因为正常的连接池不应该工作,因为SQLite一次只支持一个写连接,锁定整个数据库。
我应该继续让所有线程一个接一个地使用相同的连接(通过同步连接?)还是我应该使用已经存在的tomcat库创建一个连接池来保存连接?只有一个连接的连接池是否过大?
由于是单文件嵌入式数据库,池化几乎没有好处。
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/threadsafe.html