2011-11-16 57 views
10

我需要非常快速的SQLite數據庫訪問。這樣設置參數:如何使用PRAGMA同步=關閉同步到磁盤SQLite數據庫

PRAGMA synchronize = OFF 
PRAGMA jorunal_mode = MEMORY 

使速度足夠我的項目。 這些設置使SQLite與操作系統中的數據庫文件保持同步。 但有幾種情況,一些特定的插入,之後我必須肯定數據寫入磁盤。

有什麼辦法可以強制SQLite將所有數據(在內存日誌中等待)寫入磁盤?

謝謝。

回答

7

我建議你使用最近實施的WALjournal_mode。通過這種方式,你可以離開synchronousnormal和你的全部寫入到磁盤的寫操作,當您去:

寫入數據的速度非常快,因爲它們只涉及一次寫入 內容(而不是兩次回滾期刊交易)和 ,因爲寫入都是連續的。此外,將內容同步到 不需要磁盤,只要應用程序願意在斷電或硬重啓後犧牲持久性。

http://www.sqlite.org/wal.html

:(作家 同步上的每個事務的WAL提交如果PRAGMA同步設置 爲FULL,但如果PRAGMA同步已設置爲正常省略此同步)

上面摘自

如果這還不夠,那麼當您想要確定您的寫入不僅寫入磁盤時,還可以調用PRAGMA database.wal_checkpoint;,但也可以「集成」到您的數據庫。檢查以下內容以獲取更多信息:

http://www.sqlite.org/pragma.html#pragma_wal_checkpoint

+0

這正是我是如何做到這一點。 – kappa