רישום ביומן מראש של תאימות לאפליקציות

ב-Android 9 הוצג מצב מיוחד של SQLiteDatabase שנקרא "יומן כתיבה מראש (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 תאימות" מופעל.