2013-04-04 52 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