Tính năng ghi nhật ký trước khả năng tương thích cho các ứng dụng

Android 9 giới thiệu một chế độ đặc biệt SQLiteDatabase có tên là Ghi nhật ký ghi trước tương thích (WAL), cho phép cơ sở dữ liệu sử dụng journal_mode=WAL trong khi vẫn duy trì hành vi giữ tối đa một cho mỗi cơ sở dữ liệu.

Theo mặc định, hệ thống sẽ bật WAL về khả năng tương thích cho cơ sở dữ liệu của ứng dụng, trừ phi ứng dụng có:

  1. Chọn sử dụng hoặc không sử dụng tính năng ghi nhật ký trước bằng cách gọi SQLiteDatabase.enableWriteAheadLogging hoặc disableWriteAheadLogging
  2. Chế độ nhật ký được yêu cầu rõ ràng bằng cách gọi SQLiteDatabase.OpenParams.setJournalMode(String mode)

Việc bật chế độ nhật ký WAL có thể giúp cải thiện đáng kể cũng như giảm số lượt ghi. Ví dụ: trên định dạng ext4 WAL có thể giúp tăng tốc độ ghi gấp 4 lần.

Khả năng tương thích WAL được bật theo mặc định và không yêu cầu thêm trong quá trình triển khai.

Tắt WAL tương thích

Để tắt chế độ Tương thích WAL, hãy phủ lớp db_compatibility_wal_supported config của chúng tôi.

Ví dụ:

<bool name="db_compatibility_wal_supported">false</bool>

Bạn nên tắt WAL tương thích cho các cấu hình mà WAL chế độ nhật ký không mang lại lợi thế về hiệu suất so với tính năng khôi phục truyền thống chế độ nhật ký. Ví dụ: trên hệ thống tệp F2FS, mặc dù SQLite hỗ trợ khả năng ghi nguyên tử và hiệu suất ghi nhật ký DELETE tương tự như WAL, WAL tăng số lượt ghi từ 10% đến 15%.

Xác nhận kết quả

Để xác thực chế độ WAL tương thích, hãy chạy Kiểm tra CTS từ mô-đun CtsDatabaseTestCases. Thử nghiệm CTS sẽ xác minh khi WAL tương thích được bật.