- নোংরা পড়া : অন্য লেনদেন থেকে অননুমোদিত ডেটা পড়ুন
- পুনরাবৃত্তিযোগ্য পাঠ্য :
UPDATEঅন্য লেনদেনের কোয়েরি থেকেকমিট করা ডেটা পড়ুন
- ফ্যান্টম পড়েন : কমিটেড ডেটা একটি
INSERTবাDELETEঅন্য কোনও লেনদেনের কোয়েরি থেকে পড়ুন
দ্রষ্টব্য : অন্য কোনও লেনদেনের বিবৃতি মুছে ফেলার ক্ষেত্রেও কিছু ক্ষেত্রে অ-পুনরাবৃত্তযোগ্য পাঠ ঘটানোর খুব কম সম্ভাবনা রয়েছে। দুর্ভাগ্যবশত, মোছা বিবৃতিটি মুছে ফেলার পরে এটি ঘটে যখন আপনার বর্তমান লেনদেনটি জিজ্ঞাসা করছে same তবে এটি একটি বিরল ঘটনা, এবং প্রতিটি টেবিলে লক্ষ লক্ষ সারি রয়েছে এমন একটি ডাটাবেসে উপস্থিত হওয়ার সম্ভাবনা বেশি। লেনদেনের ডেটাযুক্ত টেবিলগুলির যে কোনও উত্পাদন পরিবেশে সাধারণত উচ্চ ডেটা ভলিউম থাকে।
এছাড়াও আমরা পর্যবেক্ষণ করতে পারি যে আপডেটগুলি প্রকৃত INSERT বা মুছে ফেলার পরিবর্তে বেশিরভাগ ব্যবহারের ক্ষেত্রে খুব ঘন ঘন কাজ হতে পারে (এই ক্ষেত্রে, পুনরাবৃত্তিযোগ্য পাঠকের ঝুঁকি কেবল রয়ে যায় - এই ক্ষেত্রে ফ্যান্টম রিডগুলি সম্ভব নয়)। এজন্য UPDATES INSERT-DELETE থেকে পৃথকভাবে চিকিত্সা করা হয় এবং ফলস্বরূপ বিচ্ছিন্নতার নামও আলাদাভাবে রাখা হয়।
কেবলমাত্র আপডেটগুলি হ্যান্ডেল করার পরিবর্তে ইনসার্ট-ডিলেটগুলি হ্যান্ডলিংয়ের সাথে যুক্ত একটি অতিরিক্ত প্রসেসিং ব্যয়ও রয়েছে।
- READ_UNCOMMITTED কিছুই রোধ করে না। এটি শূন্য বিচ্ছিন্নতা স্তর
- READ_COMMITTED কেবলমাত্র একটি, যেমন ডার্টি রিডকে বাধা দেয়
- REPEATABLE_READ দুটি অসঙ্গতি প্রতিরোধ করে: নোংরা পাঠ্য এবং পুনরাবৃত্তযোগ্য পাঠ্য
- সিরিয়ালিবল সমস্ত তিনটি ব্যাহতিকে বাধা দেয়: নোংরা পাঠ্য, পুনরাবৃত্তযোগ্য পাঠ্য এবং ফ্যান্টম পড়েন
তাহলে কেন আপনি সর্বদা লেনদেনকে সিরিয়ালিজাবল সেট করবেন না? ঠিক আছে, উপরের প্রশ্নের উত্তর হ'ল: সিরিয়ালিয়াল সেটিং লেনদেনগুলি খুব ধীর করে দেয় , যা আমরা আবার চাই না।
আসলে লেনদেনের সময় ব্যয় নিম্নলিখিত হারে হয়:
সিরিয়ালযোগ্য > পুনরায় সরবরাহযোগ্য > READ_COMMITTED > READ_UNCOMMITTED
সুতরাং READ_UNCOMMITTED সেটিংটি সবচেয়ে দ্রুত ।
সারসংক্ষেপ
আসলে আমাদের ব্যবহারের ক্ষেত্রে বিশ্লেষণ করতে হবে এবং বিচ্ছিন্নতার স্তরটি নির্ধারণ করতে হবে যাতে আমরা লেনদেনের সময়টি অনুকূল করে তুলি এবং বেশিরভাগ অসঙ্গতিগুলি রোধ করি।
নোট করুন যে ডিফল্ট হিসাবে ডেটাবেসগুলিতে REPEATABLE_READ সেটিং রয়েছে।