תאימות רישום כתיבה קדימה עבור אפליקציות

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

תאימות WAL מופעלת עבור מסד נתונים של אפליקציה כברירת מחדל, אלא אם כן לאפליקציה יש:

  1. הסכמה או ביטול של רישום כתיבה קדימה על ידי קריאה ל- SQLiteDatabase.enableWriteAheadLogging או disableWriteAheadLogging
  2. מצב יומן מבוקש במפורש על ידי קריאה ל- 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 מופעלת.