應用程式的相容性預寫記錄

Android 9 導入了 SQLiteDatabase 名為「相容性預先寫入記錄」(WAL),可讓資料庫使用 journal_mode=WAL,同時保留最多保留一個值的行為 每個資料庫的連線

應用程式資料庫預設會啟用相容性 WAL,除非 應用程式具有以下其中一種:

  1. 透過呼叫,選擇加入或停用預先寫入記錄 SQLiteDatabase.enableWriteAheadLogging敬上 或 disableWriteAheadLogging
  2. 呼叫 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 啟用時的行為。