2013-04-04 424 views
2

我已经在多线程环境中阅读了几篇关于SQLite的相关线程,但是我找不到明确的语句,所以请原谅我再次提出这个话题。Java中的SQLite连接池 - 锁定数据库

我需要从多个线程访问应用程序的数据库来执行更新语句。数据库本身可以是SQLite或MySQL,具体取决于用户的选择。对于MySQL处理程序,我使用tomcat-jdbc库实现了一个连接池。现在我正在寻找SQLite处理程序的最佳方式,因为正常的连接池应该不起作用,因为SQLite在锁定整个数据库的时候只支持一个写连接。

我应该继续使所有使用相同连接的线程(通过同步连接?)还是应该使用已存在的只包含连接的tomcat库创建连接池?可能有一个连接的连接池过大?

回答

6

由于它是单一文件嵌入式数据库,所以共享几乎没有好处。

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

+0

首先链路断开:( – pratnala 2014-03-04 09:29:26

+1

@pratnala看到更新 – Andrey 2014-03-04 12:18:43