মূল কন্টেন্টে যান
মডিউল 11 · 4-এর পাঠ 4কোর্সে 44/57~12 min
মডিউল পাঠ (4/4)

বিচ্ছিন্নতার মাত্রা

আপডেটের জন্য সুস্পষ্ট ব্যতীত, লেনদেনের ইঞ্জিনের গভীরে বেক করা সহজাত গাণিতিক নিয়ম রয়েছে যা ডিফল্টরূপে প্রতিটি পৃথক মিথস্ক্রিয়াকে আলাদা করার জন্য কত শক্তি ব্যয় করতে হবে তা নিয়ন্ত্রণ করে। একে বিচ্ছিন্নতা স্তর বলা হয়। এসকিউএল বিশ্বে আমরা 4টি স্ট্যান্ডার্ড জানি, ক্ষমতা এবং নিরাপত্তার ক্রমানুসারে কিন্তু কার্যক্ষমতার ক্ষেত্রে স্পষ্টতই বিপরীত।

  • READ UNCOMMITTED: নৈরাজ্যিক উন্মাদনা, আপনার লেনদেন তাদের নিজস্ব স্ক্রিপ্টের অর্ধেক পথের মাধ্যমে অস্থায়ী ডেটা সহ অন্যদের দ্বারা করা প্রতিটি পরিবর্তন দেখতে পাবে৷ ক্রমাগত ডার্টি রিড ত্রুটির কারণে কেউ এটি বড় ডিবিতে ব্যবহার করে না।
  • READ COMMITTED: (পোস্টগ্রেসের জন্য ডিফল্ট)। তৃতীয় পক্ষ একটি কমিট ইস্যু করার সাথে সাথে আপনি অবিলম্বে নতুন ডেটা দেখতে পাবেন, কিন্তু আপনি ফ্যান্টম রিড (আপনার দীর্ঘ কর্মপ্রবাহের মধ্য দিয়ে নতুন রেকর্ড দেখা) বা একটি নন-লিনিয়ার সামঞ্জস্যপূর্ণ দৃশ্যের শিকার হতে পারেন।
  • REPEATABLE READ: আরও ভারী। আপনার বড় টাইম-উইন্ডো সেশনের সময়কালের জন্য আমি "দেখছি" ডাটাবেসটি আমার প্রশ্ন শুরু হওয়ার মুহুর্তে হিমায়িত হয়ে গেছে, এমনকি অন্য লোকেদের দ্বারা সম্পন্ন করা অফিসিয়াল প্রতিশ্রুতিগুলিকে সম্পূর্ণরূপে উপেক্ষা করে এবং উপেক্ষা করে! এটি জাদুকরীভাবে প্রদর্শিত রেকর্ড থেকে রক্ষা করে, স্থিতিশীলতার নিশ্চয়তা দেয়।
  • SERIALIZABLE: ঈশ্বর স্তর (সুপার স্লো)। প্রতিটি ওভারল্যাপিং লেনদেনকে অবরুদ্ধ করে এবং একটি একক লেনের লাইনে ধারাবাহিকভাবে সম্পাদন করে, যেগুলি সংঘর্ষ হয় তাদের নির্মমভাবে বাতিল করে, এমনকি সামান্যতম সংঘর্ষের বৈজ্ঞানিক সম্ভাবনাকে মূলে বাদ দিয়ে, একটি কঠিন 90% উচ্চ থ্রুপুটকে বলিদান করে।

আপনি এটা কিভাবে সেট করবেন?

স্বাভাবিক BEGIN; এর পরিবর্তে আপনি টাইপ করেন:

SQL
BEGIN ISOLATION LEVEL SERIALIZABLE;

-- and you proceed normally with your hermetically sealed isolation
UPDATE products SET stock = 10;
COMMIT;

অথবা কিছু ভেরিয়েন্ট এবং পুরানো ইঞ্জিনে আপনি এটি শুরু করার পরে বরাদ্দ করেন:

SQL
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;

নিজে চেষ্টা করে দেখুন

ব্যায়াম#sql.m11.l4.e1
প্রচেষ্টা: 0লোড হচ্ছে...

একটি হিমায়িত, সুরক্ষিত এক্সচেঞ্জ তৈরি করার জন্য কোয়েরির জীবনকালের জন্য বিশ্বব্যাপী স্তরটিকে আনুষ্ঠানিকভাবে সেট করে একটি লেনদেন শুরু করুন৷\nমনে রাখবেন যে ক্যোয়ারী স্তরে এটি অন্য কিছু দ্বারা অনুসরণ না করা পর্যন্ত কোনও উদ্দেশ্য পূরণ করে না, তাই 'কমিট' দিয়ে এটি খালি বন্ধ করুন৷

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

BEGIN আইসোলেশন লেভেল রিপিটেবল রিড দিয়ে খুলুন; এবং COMMIT এর সাথে বন্ধ করুন;

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

ব্যায়াম#sql.m11.l4.e2
প্রচেষ্টা: 0লোড হচ্ছে...

আসুন ক্রেজি সিরিয়ালাইজেবল লেভেল চেষ্টা করি এবং কিছু কাল্পনিক ডেটা সন্নিবেশ করি।\nএকটি 'সিরিয়ালাইজেবল' ব্লক খুলুন।\nক্যাটাগরি আইডি=2 এর নাম 'নুওভো নোম সেগ্রেটো'-তে আপডেট করুন।\nচূড়ান্ত পারমাণবিক, সেটলিং কমিট চালান।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

বিচ্ছিন্নতা স্তরের ক্রমানুসারে শুরু করুন;\nআপডেট বিভাগগুলি সেট নাম = 'নুওভো নোম সেগ্রেটো' যেখানে আইডি = 2;\nকমিট;

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ