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

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

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

  1. تفعيل أو إيقاف التسجيل المسبق للأحداث من خلال استدعاء SQLiteDatabase.enableWriteAheadLogging أو disableWriteAheadLogging
  2. طلب وضع دفتر اليومية بشكل صريح من خلال استدعاء SQLiteDatabase.OpenParams.setJournalMode(String mode)

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

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

إيقاف "التسجيل المسبق للأحداث في وضع التوافق"

لإيقاف وضع "التسجيل المسبق للأحداث في وضع التوافق"، يجب تراكب مورد الإعدادات db_compatibility_wal_supported.

على سبيل المثال:

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

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

التحقق من صحة البيانات

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