Transaction Isolation Levels

MariaDB Transactions এবং ACID Properties - মারিয়া ডিবি (MariaDB) - Database Tutorials

232

Transaction Isolation Levels বা ট্রানজেকশন আইসলেশন লেভেলস হল ডেটাবেসের একটি গুরুত্বপূর্ণ বৈশিষ্ট্য, যা ট্রানজেকশনের মধ্যে ডেটার দৃশ্যমানতা এবং একে অপরের সাথে সম্পর্কিত আচরণ নির্ধারণ করে। এটি মূলত একাধিক ট্রানজেকশন যখন একে অপরের সাথে সমান্তরালভাবে চলে, তখন তাদের মধ্যে ডেটার সঠিকতা ও সামঞ্জস্য নিশ্চিত করতে ব্যবহৃত হয়। মারিয়া ডিবি (MariaDB) তে চারটি প্রধান আইসলেশন লেভেল উপলব্ধ রয়েছে, প্রতিটি আলাদা ডেটা কনসিস্টেন্সি এবং কনকারেন্সি প্রস্তাব করে।


Transaction Isolation Levels কী?

Transaction Isolation Level নির্ধারণ করে যে একাধিক ট্রানজেকশন একে অপরের মধ্যে কিভাবে প্রভাবিত হবে। একে বুঝতে হলে, কিছু সাধারণ ট্রানজেকশন সম্পর্কিত সমস্যা যেমন dirty reads, non-repeatable reads, এবং phantom reads এর ব্যাপারে জানাও দরকার।

  • Dirty Read: এক ট্রানজেকশন এমন ডেটা পড়ে যা অন্য ট্রানজেকশনের মধ্যে পরিবর্তিত হতে পারে কিন্তু এখনও কমিট হয়নি।
  • Non-repeatable Read: এক ট্রানজেকশন যেটি একটি ডেটার মান পড়েছে, পরবর্তীতে সেই মান অন্য ট্রানজেকশন দ্বারা পরিবর্তিত হতে পারে।
  • Phantom Read: এক ট্রানজেকশনের মধ্যে পুনরায় রিড করার সময় নতুন ডেটা দেখা যেতে পারে যা প্রথমে উপস্থিত ছিল না।

মারিয়া ডিবি তে Transaction Isolation Levels

মারিয়া ডিবি (MariaDB) তে মোট চারটি Isolation Level উপলব্ধ:

১. READ UNCOMMITTED

READ UNCOMMITTED সর্বনিম্ন আইসলেশন লেভেল, যেখানে এক ট্রানজেকশন অপর ট্রানজেকশন দ্বারা পরিবর্তিত ডেটা পড়তে পারে, এমনকি তা কমিট হয়নি। এটিকে Dirty Read অনুমোদন করা হয়। এর ফলে পারফরম্যান্স উন্নত হলেও ডেটা সঠিকতার সমস্যা তৈরি হতে পারে।

  • Dirty Read অনুমোদিত
  • Non-repeatable Read হতে পারে
  • Phantom Read হতে পারে

উদাহরণ:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
START TRANSACTION;
SELECT * FROM Employees;

২. READ COMMITTED

READ COMMITTED আইসলেশন লেভেল কিছুটা বেশি নিরাপদ, যেখানে শুধুমাত্র কমিট হওয়া ডেটা ট্রানজেকশন দ্বারা দেখা যায়। তবে, এটি Non-repeatable Read হতে পারে, কারণ এক ট্রানজেকশন দ্বিতীয়বার ডেটা পড়লে সেই ডেটার মান পরিবর্তিত হতে পারে যদি অন্য একটি ট্রানজেকশন ডেটা কমিট করে।

  • Dirty Read বন্ধ
  • Non-repeatable Read হতে পারে
  • Phantom Read হতে পারে

উদাহরণ:

SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
START TRANSACTION;
SELECT * FROM Employees;

৩. REPEATABLE READ

REPEATABLE READ আইসলেশন লেভেল অনেক বেশি নিরাপদ এবং এটি Non-repeatable Read এর সমস্যা সমাধান করে। এই লেভেলে, এক ট্রানজেকশন যখন একটি ডেটা পড়ে, তখন তা অন্য ট্রানজেকশনের দ্বারা পরিবর্তিত হতে পারে না যতক্ষণ না প্রথম ট্রানজেকশন কমিট না হয়। তবে, এটি Phantom Read অনুমোদন করতে পারে, অর্থাৎ নতুন রেকর্ডগুলো দেখতে পাওয়া যেতে পারে।

  • Dirty Read বন্ধ
  • Non-repeatable Read বন্ধ
  • Phantom Read হতে পারে

উদাহরণ:

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
START TRANSACTION;
SELECT * FROM Employees;

৪. SERIALIZABLE

SERIALIZABLE হল সবচেয়ে শক্তিশালী আইসলেশন লেভেল, যেখানে এক ট্রানজেকশন সম্পূর্ণভাবে অন্য ট্রানজেকশনগুলির সাথে বিরোধিতা করে। এই লেভেলে, একে অপরের মধ্যে কোনো ধরণের Dirty Read, Non-repeatable Read, বা Phantom Read হয় না। এটি ডেটাবেসে পুরোপুরি সিরিয়াল কার্যক্রমের মত কাজ করে, তবে পারফরম্যান্স কিছুটা কমিয়ে দেয় কারণ একাধিক ট্রানজেকশনকে একটি সময়ে চলতে দেয় না।

  • Dirty Read বন্ধ
  • Non-repeatable Read বন্ধ
  • Phantom Read বন্ধ

উদাহরণ:

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
START TRANSACTION;
SELECT * FROM Employees;

Transaction Isolation Levels এর তুলনা

Isolation LevelDirty ReadNon-repeatable ReadPhantom Read
READ UNCOMMITTEDAllowedAllowedAllowed
READ COMMITTEDNot AllowedAllowedAllowed
REPEATABLE READNot AllowedNot AllowedAllowed
SERIALIZABLENot AllowedNot AllowedNot Allowed

ব্যবহারকারী পরিস্থিতি অনুযায়ী আইসলেশন লেভেল নির্বাচন

  • READ UNCOMMITTED: যখন পারফরম্যান্স সবচেয়ে বেশি গুরুত্বপূর্ণ, এবং ডেটার সামান্য অখণ্ডতা সমস্যা গ্রহণযোগ্য।
  • READ COMMITTED: যেখানে ডেটা সামান্য পরিবর্তন হলেও চলবে এবং আপনি কমিট হওয়া ডেটাই দেখতে চান, তবে কিছু পারফরম্যান্স কম্প্রোমাইজ হবে।
  • REPEATABLE READ: যখন ডেটার পুনরাবৃত্তি নিশ্চিত করা প্রয়োজন, কিন্তু পারফরম্যান্স কিছুটা কমবে।
  • SERIALIZABLE: সর্বোচ্চ ডেটা সঠিকতা এবং একাধিক ট্রানজেকশনের মধ্যে সর্বোচ্চ আইসলেশন নিশ্চিত করতে হবে, তবে পারফরম্যান্স অনেকটাই কমে যাবে।

সারাংশ

মারিয়া ডিবি (MariaDB) তে Transaction Isolation Levels ব্যবহার করে আপনি ট্রানজেকশনের মধ্যে ডেটার দৃশ্যমানতা এবং একে অপরের সাথে সম্পর্কিত আচরণ নিয়ন্ত্রণ করতে পারেন। এর মাধ্যমে dirty reads, non-repeatable reads, এবং phantom reads নিয়ন্ত্রণ করা যায়। পারফরম্যান্স এবং ডেটার সঠিকতার মধ্যে সঠিক ভারসাম্য বজায় রাখতে এই লেভেলগুলির নির্বাচন গুরুত্বপূর্ণ।

Content added By
Promotion

Are you sure to start over?

Loading...