اعتبارًا من 27 آذار (مارس) 2025، ننصحك باستخدام android-latest-release بدلاً من aosp-main لإنشاء AOSP والمساهمة فيه. لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في AOSP.
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
يقدّم نظام التشغيل Android 9 وضعًا خاصًا لملف SQLiteDatabase يُعرف باسم "تسجيل الكتابة المسبقة للتوافق" (WAL) الذي يسمح لقاعدة البيانات باستخدامjournal_mode=WAL مع الحفاظ على سلوك الاحتفاظ بحد أقصى بتسجيل اتصال واحد لكل قاعدة بيانات.
يكون ملف "السجلّ الإداري للتوافق" مفعّلاً تلقائيًا لقاعدة بيانات التطبيق ما لم يكن
التطبيق يتضمّن أيًا مما يلي:
تم طلب وضع السجلّ صراحةً من خلال الاتصال
SQLiteDatabase.OpenParams.setJournalMode(String mode)
يمكن أن يؤدي تفعيل وضع دفتر السجلّ WAL إلى تحسين ملفوظ بشكل كبير في
الأداء وتقليل كمية عمليات الكتابة. على سبيل المثال، في نظام الملفات ext4
، يمكن أن يؤدي WAL إلى تحسين سرعة الكتابة بمقدار 4 مرات.
يتم تفعيل ميزة "السجلّ الإداري للتوافق" تلقائيًا ولا تتطلّب أي تنفيذ إضافي.
قد تحتاج إلى إيقاف "ملف أرشيف السجلّات للتوافق" للإعدادات التي لا يقدّم فيها وضع ملف أرشيف السجلّات
أي ميزة أداء مقارنةً بوضع ملف أرشيف السجلّات
للرجوع إلى الإصدار السابق. على سبيل المثال، في نظام ملفات F2FS، على الرغم من أنّ SQLite يتيح
الكتابة الذرّية وأداء دفتر يوميات DELETE مشابه لأداء WAL، يمكن أن يؤدي WAL إلى
زيادة مقدار عمليات الكتابة بنسبة تتراوح بين% 10 و%15.
التحقُّق
للتحقّق من صحة وضع WAL للتوافق، يمكنك تنفيذ
اختبارات CTS
من وحدة CtsDatabaseTestCases. ستحدّد اختبارات CTS السلوك المتوقع عند تفعيل "ملف السجلّ الإداري للتوافق".
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[null,null,["تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Compatibility write-ahead logging for apps\n\nAndroid 9 introduces a special mode of\n[SQLiteDatabase](https://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html)\ncalled Compatibility write-ahead logging (WAL) that allows a database to use\n`journal_mode=WAL` while preserving the behavior of keeping a maximum of one\nconnection per database.\n\nCompatibility WAL is enabled for an app's database by default unless the\napp has either:\n\n1. Opted-in or out of write-ahead logging by calling [`SQLiteDatabase.enableWriteAheadLogging`](https://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#enableWriteAheadLogging()) or [`disableWriteAheadLogging`](https://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#disableWriteAheadLogging())\n2. Explicitly requested journal mode by calling `SQLiteDatabase.OpenParams.setJournalMode(String mode)`\n\nEnabling the WAL journal mode can lead to a significant improvement in\nperformance and reduction in the amount of writes. For example, on an ext4\nfile system, WAL can lead to a 4x improvement in write speed.\n\nCompatibility WAL is enabled by default and doesn't require any additional\nimplementation.\n| **Note:** For apps using [Room](https://developer.android.com/topic/libraries/architecture/room), full write-ahead logging mode (not Compatibility WAL) is enabled by default. This applies to devices running API 16 and higher and aren't categorized as a [low memory device](https://developer.android.com/reference/android/app/ActivityManager.html#isLowRamDevice()). For more information, see [`RoomDatabase.JournalMode AUTOMATIC`](https://developer.android.com/reference/androidx/room/RoomDatabase.JournalMode#AUTOMATIC).\n\nDisable Compatibility WAL\n-------------------------\n\nTo disable the Compatibility WAL mode, overlay the\n[`db_compatibility_wal_supported`](https://android.googlesource.com/platform/frameworks/base/+/5bd43ad2e7e4e1ee2c31d920ba4b148bbdf74d11/core/res/res/values/config.xml#1692)\nconfig resource.\n\nFor example: \n\n \u003cbool name=\"db_compatibility_wal_supported\"\u003efalse\u003c/bool\u003e\n\nYou may want to disable Compatibility WAL for configurations where the WAL\njournal mode doesn't provide a performance advantage over traditional rollback\njournal modes. For example, on a F2FS file system, although SQLite supports\natomic writes and the DELETE journal performance is similar to WAL, WAL can\nincrease the amount of writes by 10% to 15%.\n\nValidation\n----------\n\nTo validate the Compatibility WAL mode, run\n[CTS tests](https://android.googlesource.com/platform/cts/+/android16-release/tests/tests/database)\nfrom the CtsDatabaseTestCases module. CTS tests will verify the expected\nbehavior when Compatibility WAL is enabled.\n| **Note:** CTS tests pass when the Compatibility WAL mode is disabled."]]