PRAGMA journal_mode = WAL; |
DELETE (nhật ký lùi cổ điển) |
WAL (lưu cố định vào header tệp DB) |
Tách các luồng đọc SELECT song song khỏi khóa ghi đơn luồng bằng cách ghi nối tiếp thay đổi vào tệp -wal tuần tự (sqlite.org/wal.html). |
PRAGMA synchronous = NORMAL; |
FULL (2) |
NORMAL trong WAL (hoặc FULL cho sổ cái nghiêm ngặt) |
Bỏ qua rào cản đồng bộ đĩa ở từng lệnh lẻ trong chế độ WAL, gom đồng bộ tại kỳ checkpoint mà vẫn an toàn khi sập tiến trình. |
PRAGMA mmap_size = <bytes>; |
0 (tắt mặc định) |
min(DB bytes, 50% RAM, 32 GiB) hoặc 0 trên LiteFS |
Ánh xạ trang dữ liệu vào không gian bộ nhớ ảo của tiến trình để giảm lệnh gọi read(); bắt buộc đặt 0 trên phân vùng FUSE LiteFS. |
PRAGMA cache_size = -<KiB>; |
-2000 (~2 MiB) |
-(RAM_MiB * 0.25 * 1024) |
Giá trị âm quy định hạn mức bộ đệm trang nội bộ tính theo KiB cho các trang cây B-tree chưa ánh xạ hoặc đang sửa đổi. |
PRAGMA busy_timeout = 5000; |
0 ms (báo lỗi SQLITE_BUSY ngay) |
3000 ms – 8000 ms (theo mức QPS ghi) |
Giúp các giao dịch mở bằng BEGIN IMMEDIATE xếp hàng chờ khóa ghi tuần tự thay vì văng lỗi SQLITE_BUSY tức thì. |
PRAGMA wal_autocheckpoint; |
1000 trang (~4 MiB) |
0 (Litestream/LiteFS) hoặc 2000–4000 (Độc lập) |
Điều khiển ngưỡng tự động checkpoint thụ động; đặt bằng 0 khi có daemon Litestream hoặc LiteFS quản lý vòng đời tệp -wal. |
PRAGMA journal_size_limit; |
-1 (không giới hạn kích thước -wal) |
67108864 (64 MiB) hoặc 134217728 (128 MiB) |
Thu gọn kích thước tệp -wal trên ổ cứng về ngưỡng cố định ngay sau khi hoàn tất mỗi chu kỳ checkpoint. |
PRAGMA temp_store = MEMORY; |
DEFAULT (0 / tạo tệp tạm trên đĩa) |
MEMORY (2) |
Giữ toàn bộ bảng tạm phục vụ ORDER BY, GROUP BY và CTE trên RAM thay vì phát sinh thao tác ghi nháp xuống ổ NVMe. |