SQLite
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> SQLite

Hành vi của Android SQLite Journal đã thay đổi?

@CL nói đúng, chế độ nhật ký dường như thay đổi tùy thuộc vào cấp API (có thể nó cũng thay đổi bởi nhà sản xuất?).

Tuy nhiên, để tham khảo trong tương lai, tôi đã truy vấn cơ sở dữ liệu cho journal_mode ở một số cấp API và kết quả là:

  • Android 2.3.7 (API 10) =xóa
  • Android 4.0.4 (API 15) =cắt bớt
  • Android 4.1.1 (API 16) =tồn tại
  • Android 4.3.0 (API 18) =tồn tại
  • Android 4.4.4 (API 19) =tồn tại
  • Android 5.0.0 (API 21) =tồn tại
  • Android 5.1.0 (API 22) =tồn tại

Mã để sử dụng chế độ nhật ký:

Cursor c = db.rawQuery("PRAGMA journal_mode;", null);
c.moveToFirst();
String journalMode = c.getString(c.getColumnIndex("journal_mode"));

Giới thiệu về các chế độ nhật ký:

Chế độ ghi nhật ký DELETE là hành vi bình thường. Trong chế độ DELETE, nhật ký khôi phục sẽ bị xóa khi kết thúc mỗi giao dịch. Thật vậy, thao tác xóa là hành động khiến giao dịch được cam kết.

Chế độ ghi nhật ký TRUNCATE cam kết các giao dịch bằng cách cắt ngắn nhật ký khôi phục về độ dài bằng 0 thay vì xóa nó. Trên nhiều hệ thống, việc cắt bớt tệp nhanh hơn nhiều so với việc xóa tệp vì thư mục chứa không cần phải thay đổi.

Chế độ ghi nhật ký PERSIST ngăn không cho nhật ký khôi phục bị xóa khi kết thúc mỗi giao dịch. Thay vào đó, tiêu đề của tạp chí được ghi đè bằng các số không. Điều này sẽ ngăn các kết nối cơ sở dữ liệu khác quay lại tạp chí. Chế độ ghi nhật ký PERSIST hữu ích như một sự tối ưu hóa trên các nền tảng mà việc xóa hoặc cắt bớt tệp đắt hơn nhiều so với việc ghi đè khối đầu tiên của tệp bằng các số không.

Thông tin thêm



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tôi không thể đặt nhiều hình ảnh trong chế độ xem lưới?

  2. Cách hoạt động của SQLite Total ()

  3. SQLite - Chọn dữ liệu

  4. Android:NullPointerException Không thể tải cơ sở dữ liệu vào listview trong một phân đoạn

  5. Truy vấn SQLite của Android - Nhận 10 bản ghi mới nhất