אנדרואיד 9 מציגה מצב מיוחד של SQLiteDatabase בשם Compatibility Write-ahead logging (WAL) המאפשר למסד נתונים להשתמש journal_mode=WAL
תוך שמירה על ההתנהגות של שמירת מקסימום חיבור אחד לכל מסד נתונים.
תאימות 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 מופעלת.