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

ב-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 משאב config.

לדוגמה:

<bool name="db_compatibility_wal_supported">false</bool>

מומלץ להשבית את WAL התאימות להגדרות שבהן WAL מצב יומן לא מספק יתרון בביצועים על פני החזרה לגרסה קודמת במצבי יומן. לדוגמה, במערכת קבצים מסוג F2FS, למרות ש-SQLite תומך כתיבה אטומית והביצועים של יומן DELETE דומים ל-WAL, WAL יכול להגדיל את כמות הכתיבה ב-10% ל-15%.

אימות

כדי לאמת את מצב WAL של התאימות, יש להריץ את הפקודה בדיקות CTS מהמודול CtsDatabaseTestCases. בדיקות CTS יאמתו את הצפי כאשר WAL לתאימות מופעל.