বিলম্বিত আপডেট পুনরুদ্ধারের ক্ষেত্রে, একটি লেনদেন কমিট না হওয়া পর্যন্ত ডিস্কে প্রকৃত ডাটাবেস পরিবর্তন স্থগিত করা হয়। এক্সিকিউশনের সময় আপডেটগুলি শুধুমাত্র লগ এবং ক্যাশে বাফারগুলিতে রেকর্ড করা হয়। যদি একটি লেনদেন কমিট করার আগে ব্যর্থ হয়, ডিস্কের ডাটাবেস অপ্রভাবিত থাকে তাই NO-UNDO. প্রতিশ্রুতিবদ্ধ লেনদেনের জন্য শুধুমাত্র REDO প্রয়োজন যার পরিবর্তনগুলি ডিস্কে লেখা হয়নি৷
৷বিলম্বিত আপডেট প্রোটোকল
- একটি লেনদেন ডিস্কে ডাটাবেস পরিবর্তন করতে পারে না যতক্ষণ না এটি তার কমিট পয়েন্টে পৌঁছায়।
- সমস্ত REDO লগ এন্ট্রি অবশ্যই কমিট করার আগে ডিস্কে জোর করে লিখতে হবে (রাইট-এহেড লগিং)।
- শুধুমাত্র REDO লগ এন্ট্রি (নতুন মান/AFIM) প্রয়োজন কোন UNDO এন্ট্রির প্রয়োজন নেই।
পুনরুদ্ধার পদ্ধতি (RDU_M)
কঠোর দুই-ফেজ লকিং সহ বহু ব্যবহারকারী সিস্টেমের জন্য, পুনরুদ্ধার অ্যালগরিদম দুটি তালিকা বজায় রাখে
- শেষ চেকপয়েন্ট থেকে প্রতিশ্রুতিবদ্ধ লেনদেনের তালিকা।
- সক্রিয় তালিকা লেনদেন যা এখনও সক্রিয় ছিল (প্রতিশ্রুতিবদ্ধ নয়)।
লগ অর্ডারে প্রতিশ্রুতিবদ্ধ লেনদেনের লিখিত ক্রিয়াকলাপগুলিতে REDO প্রয়োগ করা হয়। সক্রিয় (অনিমিত্ত) লেনদেনগুলি কার্যকরভাবে বাতিল করা হয়েছে এবং পুনরায় জমা দিতে হবে৷
উদাহরণ টাইমলাইন
চেকপয়েন্ট (t1) ক্র্যাশ (t2) T1 (প্রতিশ্রুতিবদ্ধ) T2 → REDO T3 → REDO T4 → উপেক্ষা করা (কোন প্রতিশ্রুতি নেই) T5 → উপেক্ষা করা (কোন প্রতিশ্রুতি নেই)T1 চেকপয়েন্টের আগে প্রতিশ্রুতিবদ্ধ কোন পুনরায় করার প্রয়োজন নেই। T2, T3 চেকপয়েন্টের পরে প্রতিশ্রুতিবদ্ধ পুনরায় করা আবশ্যক। T4, T5 কখনই উপেক্ষা করা হয়নি (বিলম্বিত আপডেটের অধীনে ডিস্কে কোনো পরিবর্তন নেই)।
অপ্টিমাইজেশন পুনরায় করুন
যদি প্রতিশ্রুতিবদ্ধ লেনদেনের মাধ্যমে আইটেম X একাধিকবার আপডেট করা হয়, শুধুমাত্র শেষ আপডেটটি পুনরায় করা দরকার
- লগটিকে বিপরীত ক্রমে অতিক্রম করুন।
- ইতিমধ্যে পুনরায় করা আইটেমগুলির একটি তালিকা বজায় রাখুন।
- আগে থেকেই তালিকায় থাকা আইটেমগুলি এড়িয়ে যান (শেষ মান ইতিমধ্যে পুনরুদ্ধার করা হয়েছে)।
- শুধুমাত্র সেই আইটেমগুলিকে পুনরায় করুন যা এখনও তালিকায় নেই, তারপর সেগুলি যোগ করুন৷ ৷
সুবিধা এবং সীমাবদ্ধতা
উপসংহার
NO-UNDO/REDO বিলম্বিত আপডেট কমিট না হওয়া পর্যন্ত ডিস্ক স্থগিত করে, পুনরুদ্ধারের সময় UNDO অপারেশনের প্রয়োজনীয়তা দূর করে। শেষ চেকপয়েন্টের পরে শুধুমাত্র প্রতিশ্রুতিবদ্ধ লেনদেনের জন্য REDO প্রয়োজন। এটি পুনরুদ্ধারকে সহজ করে কিন্তু সঙ্গতিকে সীমিত করে এবং সমস্ত অনিয়মিত পরিবর্তনগুলিকে ধরে রাখতে পর্যাপ্ত বাফার স্পেস প্রয়োজন৷