تسجيل التوافق مسبقًا للتطبيقات

يوفِّر Android 9 وضعًا خاصًا SQLiteDatabase يسمى تسجيل التوافق المسبق (WAL) والذي يسمح لقاعدة البيانات باستخدام journal_mode=WAL مع الحفاظ على سلوك الاحتفاظ بحد أقصى واحد اتصال لكل قاعدة بيانات.

يتم تفعيل واجهة WAL للتوافق لقاعدة بيانات التطبيق تلقائيًا ما لم يتم تحتوي على إما:

  1. تفعيل أو إيقاف ميزة "التسجيل المُسبَق للكتابة" من خلال الاتصال بأحد الأمرَين التاليَين: SQLiteDatabase.enableWriteAheadLogging أو disableWriteAheadLogging
  2. تم طلب وضع السجلّ صراحةً من خلال الاتصال SQLiteDatabase.OpenParams.setJournalMode(String mode)

يمكن أن يؤدي تفعيل وضع دفتر السجلّات WAL إلى تحسين ملفوظ بشكل كبير في الأداء وتقليل كمية عمليات الكتابة. على سبيل المثال، في نظام الملفات ext4 ، يمكن أن يؤدي WAL إلى تحسين سرعة الكتابة بمقدار 4 مرات.

يتم تفعيل "شبكة WAL" للتوافق تلقائيًا ولا تتطلّب أي خطوات إضافية التنفيذ.

إيقاف ملف السجلّ الإداري للتوافق

لإيقاف وضع WAL للتوافق، يمكنك تراكب مورد الإعدادات db_compatibility_wal_supported .

مثلاً:

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

قد تحتاج إلى إيقاف "ملف أرشيف السجلّات للتوافق" للإعدادات التي لا يقدّم فيها وضع ملف أرشيف السجلّات أداءً أفضل من أوضاع ملف أرشيف السجلّات التقليدية للرجوع. على سبيل المثال، في نظام ملفات F2FS، على الرغم من أنّ SQLite يتيح الكتابة الذرّية وأداء دفتر يوميات DELETE مشابه لأداء WAL، يمكن أن يؤدي WAL إلى زيادة مقدار عمليات الكتابة بنسبة تتراوح بين %10 و%15.

التحقُّق

للتحقق من صحة وضع WAL للتوافق، شغّل اختبارات CTS من وحدة CtsDatabaseTestCases. ستحدّد اختبارات CTS السلوك المتوقع عند تفعيل "ملف السجلّ الإداري للتوافق".