java - Java 中的 SQLite 连接池 - 锁定数据库

标签 java multithreading sqlite connection-pooling

我已经阅读了几个关于多线程环境中 SQLite 的相关帖子,但我找不到明确的说法,所以请原谅我再次提出这个话题。

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

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

最佳答案

由于它是单文件嵌入式数据库,池化几乎没有好处。

https://web.archive.org/web/20130410192252/http://sqlite.phxsoftware.com/forums/p/682/3034.aspx

由于原网站挂掉了,我提供一下总结:

I have my pooling implemented and 1000 commands using a pooled connection and the pooled speed was much closer to the single-connection speed.

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

关于java - Java 中的 SQLite 连接池 - 锁定数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15822778/

相关文章:

java - 在 Spring 的两个 bean 之间切换

c++ - sqlite中的嵌套语句

python - SQLite 插入语句使用 Flask 静默失败

c++ - 使用条件变量(监视器)同步线程

delphi - 使用 "A Simple Delphi Wrapper for SQLite3"插入日期

java - 在 java pojo 中将相同的 json 字段设置为不同的属性

java - Android全屏摄像头——同时保持摄像头选择比例

java - Lucene 自定义评分(Lucene 3.2)涉及遍历索引中的所有文档 - 最快的方法?

multithreading - 有多线程跟踪JIT编译器的示例吗?

c# - 交换对象和线程安全性有任何问题吗?