অ্যাপগুলির জন্য সামঞ্জস্যপূর্ণ লেখা-আগামী লগিং

অ্যান্ড্রয়েড 9 SQLiteDatabase- এর একটি বিশেষ মোড প্রবর্তন করে যার নাম কম্প্যাটিবিলিটি রাইট-এহেড লগিং (WAL) যা একটি ডাটাবেসকে journal_mode=WAL ব্যবহার করতে দেয় এবং প্রতি ডাটাবেস প্রতি সর্বাধিক একটি সংযোগ রাখার আচরণ সংরক্ষণ করে।

কম্প্যাটিবিলিটি WAL ডিফল্টরূপে একটি অ্যাপের ডাটাবেসের জন্য সক্ষম করা থাকে যদি না অ্যাপটিতে যেটি থাকে:

  1. SQLiteDatabase.enableWriteAheadLogging বা disableWriteAheadLogging কল করে লিখতে-আগে লগিং-এর অপ্ট-ইন বা আউট
  2. SQLiteDatabase.OpenParams.setJournalMode(String mode) কল করে স্পষ্টভাবে অনুরোধ করা জার্নাল মোড

WAL জার্নাল মোড সক্রিয় করা কর্মক্ষমতা এবং লেখার পরিমাণ হ্রাস একটি উল্লেখযোগ্য উন্নতি হতে পারে। উদাহরণস্বরূপ, একটি ext4 ফাইল সিস্টেমে, WAL লেখার গতিতে 4x উন্নতি করতে পারে।

সামঞ্জস্যতা 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 পরীক্ষাগুলি প্রত্যাশিত আচরণ যাচাই করবে যখন সামঞ্জস্যতা WAL সক্ষম হবে৷