Android 9 में, SQLiteDatabase का एक खास मोड पेश किया गया है. इसे कंपैटिबिलिटी राइट-अहेड लॉगिंग (डब्ल्यूएएल) कहा जाता है. इससे डेटाबेस, journal_mode=WAL का इस्तेमाल कर सकता है. साथ ही, यह भी पक्का किया जा सकता है कि हर डेटाबेस के लिए ज़्यादा से ज़्यादा एक कनेक्शन हो.
किसी ऐप्लिकेशन के डेटाबेस के लिए, WAL मोड डिफ़ॉल्ट रूप से चालू होता है. हालांकि, ऐसा तब नहीं होता, जब ऐप्लिकेशन में इनमें से कोई एक सुविधा मौजूद हो:
SQLiteDatabase.enableWriteAheadLoggingयाdisableWriteAheadLoggingपर कॉल करके, राइट-अहेड लॉगिंग की सुविधा के लिए ऑप्ट-इन या ऑप्ट-आउट किया गया होSQLiteDatabase.OpenParams.setJournalMode(String mode)को कॉल करके, जर्नल मोड का अनुरोध किया गया
WAL जर्नल मोड चालू करने से, परफ़ॉर्मेंस में काफ़ी सुधार हो सकता है. साथ ही, लिखने की संख्या कम हो सकती है. उदाहरण के लिए, ext4 फ़ाइल सिस्टम पर WAL की वजह से, लिखने की स्पीड में चार गुना सुधार हो सकता है.
WAL के साथ काम करने की सुविधा डिफ़ॉल्ट रूप से चालू होती है. इसके लिए, किसी और सुविधा को लागू करने की ज़रूरत नहीं होती.
Compatibility WAL बंद करें
Compatibility WAL मोड को बंद करने के लिए, db_compatibility_wal_supported कॉन्फ़िगरेशन रिसॉर्स को ओवरले करें.
उदाहरण के लिए:
<bool name="db_compatibility_wal_supported">false</bool>
आपको उन कॉन्फ़िगरेशन के लिए, कंपैटबिलिटी WAL को बंद करना पड़ सकता है जहां WAL journal mode, रोलबैक के पारंपरिक journal mode की तुलना में बेहतर परफ़ॉर्मेंस नहीं देता है. उदाहरण के लिए, F2FS फ़ाइल सिस्टम पर, SQLite एटॉमिक राइटिंग की सुविधा देता है. साथ ही, DELETE जर्नल की परफ़ॉर्मेंस, WAL की तरह ही होती है. हालांकि, WAL से राइटिंग की संख्या में 10% से 15% तक की बढ़ोतरी हो सकती है.
सत्यापन
Compatibility WAL मोड की पुष्टि करने के लिए, CtsDatabaseTestCases मॉड्यूल से CTS टेस्ट चलाएं. CTS टेस्ट से यह पुष्टि की जाएगी कि Compatibility WAL चालू होने पर, उम्मीद के मुताबिक काम कर रहा है या नहीं.