تسجيل واجهة برمجة التطبيقات المتوافقة مع التطبيق بشأن التوافق

يوفِّر 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" للتوافق.