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

Android 9 giới thiệu một chế độ đặc biệt của SQLiteDatabase có tên là Ghi nhật ký ghi trước khả năng 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 kết nối cho mỗi cơ sở dữ liệu.

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

  1. Chọn tham gia hoặc không tham gia ghi nhật ký viết 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ể dẫn đến cải thiện đáng kể về hiệu suất và giảm số lượng ghi. Ví dụ: trên hệ thống tệp ext4, WAL có thể cải thiện 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 bất kỳ triển khai bổ sung nào.

Vô hiệu hóa khả năng tương thích WAL

Để tắt chế độ WAL tương thích, hãy phủ tài nguyên cấu hình db_compatibility_wal_supported .

Ví dụ:

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

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

Thẩm định

Để xác thực chế độ WAL tương thích, hãy chạy kiểm tra CTS từ mô-đun CtsDatabaseTestCase. Kiểm tra CTS sẽ xác minh hành vi dự kiến ​​khi bật WAL tương thích.