Android 9 में SQLiteDatabase का एक खास मोड उपलब्ध कराया गया है. इसे कंपैटिबिलिटी वाइट-अहेड लॉगिंग (डब्ल्यूएएल) कहा जाता है. इसकी मदद से, डेटाबेस में 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 की मदद से डेटा में बदलाव करने की संख्या 10% से 15% तक बढ़ सकती है.
पुष्टि करें
साथ काम करने वाले WAL मोड की पुष्टि करने के लिए, CtsDatabaseTestCases मॉड्यूल से CTS टेस्ट चलाएं. CTS टेस्ट, Compatibility WAL चालू होने पर, उम्मीद के मुताबिक व्यवहार की पुष्टि करेंगे.