2008-11-03 92 views
4

我使用SQLite進行桌面和PDA上的多個應用程序。大多數操作是隻讀的,因爲SQLite在我的應用程序中用作參考資料的數據存儲。Sqlite優化:只讀場景

基本上,我正在尋找提高性能的建議,在這種情況下,您知道對數據的訪問只是只讀的。

也許通過各種附註設置?等等...

SQLite性能非常好,但是在PDA上有多個數據庫時,我可以看到小的性能問題。我不認爲這是SQLite的問題,只是PDA的速度的現實。不過,話雖如此,也許有辦法改進它。


良好的建議和妥善處理。我希望能夠更具體地告訴引擎我正在做什麼。例如,告訴引擎不會有多次寫入數據庫,或以某種方式修改緩存處理。

但是,我很高興您提請注意數據庫的「設計」方面作爲主要問題。

+0

您是否嘗試過去規範化數據? – Quibblesome 2008-11-03 10:04:54

回答

-1

可以調用sqlite3_open_v2()SQLITE_OPEN_READONLY分貝

  • 只選擇列。我不知道sqlite3是否真的使用它來優化它的行爲,或者只是在對OS進行公開調用時設置適當的權限。

  • +1

    不,SQLITE_OPEN_READONLY標誌的sqlite3_open_v2()根本不會提高性能,只是提高了安全性。 – 2010-01-12 15:39:34

    2

    標準數據庫性能的技巧仍然適用:

    • 確保您的查詢使用索引,而不是全表掃描
    • 要儘可能選擇,你可以在你的查詢,所以你不能從拉動不需要的行你想
    2

    帶有標誌SQLITE_OPEN_READONLY的sqlite3_open_v2()改變了SQLite處理機會鎖的方式沒有真正的性能優勢。你可以使用一個雜注cache_size,如果你正在做很多次讀取,或者根據db的大小,使用:memory open選項在db的內存副本中做一個拷貝。