5
民間 我正在實施基於文件的隊列(see my earlier question)使用sqlite。我有以下線程在後臺運行:sqlite數據庫連接/鎖定問題
- 線程1將清空內存結構到「隊列」表(插入到「隊列」表中)。
- 線程1讀取並「處理」「隊列」表每5到10秒運行一次
- 線程3 - 運行非常少,並清除不再需要從「隊列」表中刪除的舊數據,運行真空,因此數據庫文件的大小仍然很小。
現在我想要的行爲是讓每個線程獲得所需的任何鎖定(如果可能,請等待超時),然後完成事務。如果線程不同時運行,那麼確定 - 重要的是事務一旦開始就不會因「鎖定」錯誤(例如「數據庫已鎖定」)而失敗。
我看着transaction documentation但似乎沒有「超時」設施(我正在使用JDBC)。連接中的超時時間可以設置爲大量嗎?
一個解決方案(未嘗試)我能想到的是有一個最大1連接的連接池。因此,一次只能連接一個線程,所以我們不應該看到任何鎖定錯誤。有更好的方法嗎?
Thanx!
感謝名單唐,這就是我可能最終會做,雖然通過一個DB池設置它會做(和更少的混亂,因爲你是治療像其他數據庫SQLite的更「標準」的方式在代碼中。 – serverman 2010-07-10 13:54:04