Android 9 導入了
SQLiteDatabase
名為「相容性預先寫入記錄」(WAL),可讓資料庫使用
journal_mode=WAL
,同時保留最多保留一個值的行為
每個資料庫的連線
應用程式資料庫預設會啟用相容性 WAL,除非 應用程式具有以下其中一種:
- 透過呼叫,選擇加入或停用預先寫入記錄
SQLiteDatabase.enableWriteAheadLogging
敬上 或disableWriteAheadLogging
- 呼叫
SQLiteDatabase.OpenParams.setJournalMode(String mode)
啟用 WAL 日誌模式可大幅提升 並降低寫入量例如 WAL 可將寫入速度提升 4 倍。
相容性 WAL 預設為啟用,不需要任何其他 。
停用相容性 WAL
如要停用相容性 WAL 模式,請將
db_compatibility_wal_supported
敬上
config 資源
例如:
<bool name="db_compatibility_wal_supported">false</bool>
建議您針對 WAL 的設定停用相容性 WAL 相較於傳統的復原方式,日誌模式無法享有效能優勢 例如,在 F2FS 檔案系統上,雖然 SQLite 支援 Atomic 寫入與 DELETE 日誌效能與 WAL 類似,WAL 可以 將寫入量增加 10% 至 15%
驗證
如要驗證相容性 WAL 模式,請執行以下指令: CTS 測試 CtsDatabaseTestCases 模組。CTS 測試會 當相容性 WAL 啟用時的行為。