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