我做了一個SQLite數據庫(〜700MB,3個表,3個索引 - 1個索引和2個主鍵)。我將它標記爲只讀文件(在Windows上)。在SQLite上執行SELECT命令
從多線程執行這個數據庫的SELECT命令是否安全和高性能?
如果是這樣,怎樣才能提高性能(任何選項或標誌啓用,任何微調)?
此應用程序在C#中使用System.Data.SQLite(1.0.82.0),在x64機器上爲.NET 4.0編譯。它工作正常(不一定表演或正確平行,因爲我不知道(如何)證明他們)。目前我沒有真正的瓶頸,但很快我就會!我需要儘可能快地搜索rtree。 (在我的機器上4GB,2個核心)搜索rtree有時需要超過5毫秒。我已經使這部分多線程來處理我的數據並行。根據R-Tree(或者我認爲R * -Tree在SQLite的情況下)的結構,如果我的數據庫增長到一些GB,它應該沒有問題,因爲這些樹的深度很低,並且在大型數據集上很快。但是,如果有任何改進是可能的,那麼它應該在這個應用程序中考慮。
我不能確定已並行的部分是否真的並行運行,例如SQLite(或System.Data.SQLite)沒有內部鎖定。事實上,在一些測試中,並行版本運行速度較慢!
「* .. provided .. *」對於您來說非常重要。 – 2012-12-27 20:05:51