我需要非常快速的SQLite數據庫訪問。這樣設置參數:如何使用PRAGMA同步=關閉同步到磁盤SQLite數據庫
PRAGMA synchronize = OFF
PRAGMA jorunal_mode = MEMORY
使速度足夠我的項目。 這些設置使SQLite與操作系統中的數據庫文件保持同步。 但有幾種情況,一些特定的插入,之後我必須肯定數據寫入磁盤。
有什麼辦法可以強制SQLite將所有數據(在內存日誌中等待)寫入磁盤?
謝謝。
我需要非常快速的SQLite數據庫訪問。這樣設置參數:如何使用PRAGMA同步=關閉同步到磁盤SQLite數據庫
PRAGMA synchronize = OFF
PRAGMA jorunal_mode = MEMORY
使速度足夠我的項目。 這些設置使SQLite與操作系統中的數據庫文件保持同步。 但有幾種情況,一些特定的插入,之後我必須肯定數據寫入磁盤。
有什麼辦法可以強制SQLite將所有數據(在內存日誌中等待)寫入磁盤?
謝謝。
我建議你使用最近實施的WAL
journal_mode
。通過這種方式,你可以離開synchronous
到normal
和你的全部寫入到磁盤的寫操作,當您去:
寫入數據的速度非常快,因爲它們只涉及一次寫入 內容(而不是兩次回滾期刊交易)和 ,因爲寫入都是連續的。此外,將內容同步到 不需要磁盤,只要應用程序願意在斷電或硬重啓後犧牲持久性。
:(作家 同步上的每個事務的WAL提交如果PRAGMA同步設置 爲FULL,但如果PRAGMA同步已設置爲正常省略此同步)
上面摘自
如果這還不夠,那麼當您想要確定您的寫入不僅寫入磁盤時,還可以調用PRAGMA database.wal_checkpoint;
,但也可以「集成」到您的數據庫。檢查以下內容以獲取更多信息:
這正是我是如何做到這一點。 – kappa