তুমি জিজ্ঞেস করেছিলে
যেখানে অননুমোদিত ডেটা সংরক্ষণ করা হয়, যেমন একটি READ_UNCOMMITTED লেনদেন অন্য লেনদেন থেকে অনির্দিষ্ট ডেটা পড়তে পারে?
আপনার প্রশ্নের উত্তর দেওয়ার জন্য আপনাকে ইনোডিবি আর্কিটেকচারটি কেমন দেখাচ্ছে তা জানতে হবে।
নিম্নলিখিত ছবিটি কয়েক বছর আগে পেরকোনা সিটিও ভাদিম তাকাচেনকো তৈরি করেছিলেন
ইনোডিবি লেনদেনের মডেল এবং লকিংয়ের উপর মাইএসকিউএল ডকুমেন্টেশন অনুসারে
একটি কমিট মানে হ'ল বর্তমান লেনদেনে পরিবর্তনগুলি স্থায়ীভাবে করা হয় এবং অন্যান্য সেশনে দৃশ্যমান হয়। অন্যদিকে একটি রোলব্যাক বিবৃতি, বর্তমান লেনদেনের মাধ্যমে করা সমস্ত পরিবর্তন বাতিল করে। কমিট এবং রোলব্যাক উভয়ই বর্তমান লেনদেনের সময় সেট করা সমস্ত ইনোডিবি লক প্রকাশ করে।
যেহেতু কমিটি এবং রোলব্যাক ডেটা দৃশ্যমানতা পরিচালনা করে, পুনর্নিযুক্ত সংস্থাগুলি পড়ুন এবং অনুমোদন পড়ুন এমন স্ট্রাকচার এবং প্রক্রিয়াগুলির উপর নির্ভর করতে হবে যা পরিবর্তনগুলি রেকর্ড করে
- রোলব্যাক অংশগুলি / স্থান পূর্বাবস্থায় ফেরান
- লগগুলি আবার করুন
- জড়িত টেবিল (গুলি) এর বিরুদ্ধে ল্যাপস লক করুন
রোলব্যাক সেগমেন্টস এবং পূর্বাবস্থায় স্থান পূর্বে পরিবর্তনগুলি প্রয়োগ হওয়ার আগে কীভাবে পরিবর্তিত ডেটা দেখতে হবে তা জানতে পারে। পুনরায় লগগুলি জানত যে ডেটা আপডেট হওয়ার জন্য কী পরিবর্তনগুলি রোল করতে হবে।
আপনিও জিজ্ঞাসা করেছিলেন
কেন READ_COMMITTED লেনদেনের জন্য আপত্তিহীন ডেটা পড়া, অর্থাৎ "নোংরা পড়া" করা সম্ভব হচ্ছে না? এই বিধিনিষেধ কার্যকর করার জন্য কোন পদ্ধতি?
রিডো লগস, পূর্বাবস্থায় ফেরানো স্থান এবং লক করা সারিগুলি কার্যকর হয়। আপনাকে অবশ্যই তিনি ইনোডিবি বাফার পুল বিবেচনা করতে হবে (যেখানে আপনি ইনোডাব_ম্যাক্স_ডার্টি_পেজ_সামগ্রী , ইনডোডব_বাফলার_পুল_পৃষ্ঠাবলি_ডাটি এবং ইনানোডব_বাফলার_পুল_বাইটিস_ডার্টি সহ নোংরা পৃষ্ঠাগুলি পরিমাপ করতে পারবেন )।
এর আলোকে, পড়ুন সংস্থাগুলি জানতে পারবেন স্থায়ীভাবে কী ডেটা প্রদর্শিত হবে। সুতরাং, প্রতিশ্রুতিবদ্ধ হয়নি যে নোংরা পৃষ্ঠাগুলি সন্ধান করার প্রয়োজন নেই। রিড কমিট করা এমন কিছু নয় যা একটি নোংরা পাঠের প্রতিশ্রুতিবদ্ধ। পড়ুন নিঃশব্দটি কি কি সারিগুলি লক করতে হবে এবং কোনটি পুনরায় লগগুলি ডেটা দৃশ্যমান করার জন্য পড়া বা উপেক্ষা করা হবে তা জানতে থাকবে।
আইসোলেশন পরিচালনা করতে সারিগুলির লকিংয়ের সম্পূর্ণ বোঝার জন্য, দয়া করে InnoDB লেনদেন মডেল এবং লকিং পড়ুন