Android 9 حالت ویژهای از
SQLiteDatabase
بهنام «گزارشگیری سازگاری پیشاز نوشتن» (WAL) معرفی میکند که به پایگاه داده اجازه میدهد
journal_mode=WAL را استفاده کند و درعینحال رفتار حفظ حداکثر یک
اتصال در هر پایگاه داده را حفظ کند.
«نوشتن پیشاز موعد سازگاری» (WAL) برای پایگاه داده برنامه بهطور پیشفرض فعال است، مگر اینکه برنامه یکی از موارد زیر را داشته باشد:
- با تماس گرفتن با
SQLiteDatabase.enableWriteAheadLoggingیاdisableWriteAheadLogging، با ثبت پیشنویس موافقت یا مخالفت کردهاید - حالت روزنگار با فراخواندن
SQLiteDatabase.OpenParams.setJournalMode(String mode)بهطور صریح درخواست شد
فعال کردن حالت مجله WAL میتواند منجر به بهبود قابلتوجه در عملکرد و کاهش میزان نوشتن شود. برای مثال، در سیستم فایل ext4، WAL میتواند سرعت نوشتن را تا ۴ برابر بهبود بخشد.
«سازگاری WAL» بهطور پیشفرض فعال است و به پیادهسازی اضافی نیاز ندارد.
غیرفعال کردن «سازگاری WAL»
برای غیرفعال کردن حالت «سازگاری WAL»، منبع
db_compatibility_wal_supported
پیکربندی را رونهاد کنید.
برای مثال:
<bool name="db_compatibility_wal_supported">false</bool>
ممکن است بخواهید «سازگاری WAL» را برای پیکربندیهایی که در آنها حالت مجله WAL نسبت به حالتهای مجله برگشت سنتی مزیت عملکردی ندارد غیرفعال کنید. برای مثال، در سیستم فایل F2FS، اگرچه SQLite از نوشتن اتمی پشتیبانی میکند و عملکرد مجله DELETE مشابه WAL است، اما WAL میتواند مقدار نوشتن را تا ۱۰٪ تا ۱۵٪ افزایش دهد.
اعتبارسنجی
برای اعتبارسنجی حالت «سازگاری WAL»، آزمایشهای CTS را از واحد CtsDatabaseTestCases اجرا کنید. آزمایشهای CTS رفتار موردانتظار را هنگام فعال بودن «سازگاری WAL» درستیسنجی میکنند.