Android 9 เปิดตัวโหมดพิเศษ
ฐานข้อมูล SQLite
ที่เรียกว่า ความเข้ากันได้กับการเขียนล่วงหน้าการบันทึก (WAL) ที่ทำให้ฐานข้อมูลสามารถใช้
journal_mode=WAL
ขณะที่คงลักษณะการทำงานไว้ไม่เกิน 1 ระดับ
ต่อฐานข้อมูล
WAL ความเข้ากันได้จะเปิดใช้สำหรับฐานข้อมูลของแอปโดยค่าเริ่มต้น เว้นแต่ว่า แอปมีลักษณะอย่างใดอย่างหนึ่งต่อไปนี้
- เลือกใช้หรือไม่ใช้การบันทึกการเขียนล่วงหน้าโดยเรียกใช้
SQLiteDatabase.enableWriteAheadLogging
หรือdisableWriteAheadLogging
- ขอโหมดรายการบันทึกอย่างชัดแจ้งด้วยการโทร
SQLiteDatabase.OpenParams.setJournalMode(String mode)
การเปิดใช้โหมดรายการบันทึก WAL อาจช่วยพัฒนา ประสิทธิภาพและการลดปริมาณการเขียน เช่น ใน ext4 WAL ช่วยเพิ่มความเร็วในการเขียนได้ถึง 4 เท่า
WAL ความเข้ากันได้จะเปิดใช้โดยค่าเริ่มต้นและไม่ต้องมีข้อมูลเพิ่มเติม การใช้งานของคุณ
ปิดใช้ WAL ความเข้ากันได้
หากต้องการปิดใช้โหมด WAL ที่เข้ากันได้ ให้วางซ้อนทรัพยากรการกําหนดค่า db_compatibility_wal_supported
เช่น
<bool name="db_compatibility_wal_supported">false</bool>
คุณอาจต้องการปิดใช้ WAL ที่เข้ากันได้สำหรับการกำหนดค่าที่โหมดบันทึก WAL ไม่ได้ให้ประสิทธิภาพที่ดีกว่าโหมดบันทึกการย้อนกลับแบบดั้งเดิม ตัวอย่างเช่น ในระบบไฟล์ F2FS แม้ว่า SQLite จะรองรับ การเขียนแบบอะตอมและประสิทธิภาพของบันทึก "DELETE" คล้ายกับ WAL แต่ WAL สามารถ จะเพิ่มปริมาณการเขียนได้ 10% ถึง 15%
การตรวจสอบความถูกต้อง
หากต้องการตรวจสอบความถูกต้องของโหมด WAL ที่เข้ากันได้ ให้เรียกใช้การทดสอบ CTS จากโมดูล CtsDatabaseTestCases การทดสอบ CTS จะยืนยันลักษณะการทำงานที่คาดไว้เมื่อเปิดใช้ WAL ที่เข้ากันได้