2014-02-22 29 views
1

我在我的sqlite數據庫中有一個表T只是用來執行選擇。sqlite調整隻讀表

該表T由多個進程(最多16個)同時訪問。由於此表是'只讀',我如何調整它以提高查詢的性能?

當軸頸模式=刪除,我被接收到以下錯誤消息:RS_SQLite_fetch:失敗第一步:數據庫被鎖定即使併發進程只是做選擇。然後我改變了日記模式=沃爾沃,並且我不再接收那個消息。所以我的問題是:

  1. 我可以設置什麼參數來告訴數據庫該表是隻讀的。

  2. 我可以永久設置journal mode = off嗎? Documentation表示每次打開數據庫時都必須設置日誌模式。只有在模式爲沃爾沃或刪除時才能永久設置。

  3. 我可以指定一些選項在內存中存儲或緩存該表嗎?我無法使用字符串:memory:,因爲該表將由不同的進程訪問。

  4. 我可以調整什麼其他參數?

回答

1

SQLite不鎖定表。 所有鎖定都在整個數據庫上完成。

爲防止任何其他表寫入任何其他表而干擾併發讀取,必須使用WAL模式,或將此表移動到單獨的數據庫中。

journal_mode = off不禁用鎖定。