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

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

يكون "السجلّ الإداري للتوافق" مفعَّلاً تلقائيًا لقاعدة بيانات التطبيق ما لم يكن التطبيق يتضمّن أيًا مما يلي:

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

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

يتم تفعيل ميزة "السجلّ الإداري للتوافق" تلقائيًا ولا تتطلّب أي تنفيذ إضافي.

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

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

مثلاً:

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

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

التحقُّق

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