SQL ট্রানজ্যাকশন ও কনকারেন্সি কন্ট্রোল (SQL Transactions & Concurrency Control)
সংক্ষেপে মনে রাখুন
দ্রুত রিভিশনের জন্য মূল কথা
- ACID বৈশিষ্ট্য (Atomicity, Consistency, Isolation, Durability) ব্যাখ্যা করতে পারবে।
- লকিং প্রোটোকল (ব্লকিং, ডেডলক) ও আইসোলেশন লেভেল (READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE) পার্থক্য চিহ্নিত করবে।
- SQL‑এ `BEGIN TRANSACTION`, `COMMIT`, `ROLLBACK` ব্যবহার করে ট্রানজ্যাকশন পরিচালনা করতে পারবে।
ডাটাবেস ট্রানজ্যাকশনের নির্ভরযোগ্যতার ৪ স্তম্ভ (ACID): - Atomicity (পরমাণুতা): ট্রানজ্যাকশনের সব অপারেশন সফল হ…
পরীক্ষায় আসে "Transaction Crash Recovery-তে Atomicity রক্ষা করতে কোন উপাদানটি ব্যবহৃত হয়?" উত্তর হবে Undo Log। আর Durability রক্ষা করতে ব্যবহৃত হয় Redo Log। অনেকেই এই দুটির কাজ উল্টে ফেলে।
মূল ধারণা (Core Concepts)
- Transaction: একাধিক SQL স্টেটমেন্টের যৌক্তিক একক, যা সম্পূর্ণভাবে সফল বা সম্পূর্ণভাবে ব্যর্থ হয়।
- ACID:
- Atomicity – সব স্টেটমেন্ট একসাথে কমিট হয় বা একটিও না।
- Consistency – ডেটা বৈধ অবস্থা বজায় রাখে।
- Isolation – সমান্তরাল ট্রানজ্যাকশন একে অপরকে প্রভাবিত করে না।
- Durability – কমিটের পর ডেটা স্থায়ীভাবে সংরক্ষিত হয়।
- Isolation Levels (SQL‑92):
- READ UNCOMMITTED (ডার্টি রিড), READ COMMITTED (নন‑রিপিটেবল রিড), REPEATABLE READ (ফ্যান্টম রিড), SERIALIZABLE (সর্বোচ্চ নিরাপত্তা)।
বিস্তারিত বিশ্লেষণ ও ফর্মুলা (Analysis, code trace, or comparison table)
| Isolation Level | Phenomena Prevented | Typical Lock Type |
|---|---|---|
| READ UNCOMMITTED | None (allows dirty reads) | No shared locks |
| READ COMMITTED | Dirty reads | Shared lock released after read |
| REPEATABLE READ | Dirty & non‑repeatable reads | Shared locks held till commit |
| SERIALIZABLE | All three (dirty, non‑repeatable, phantom) | Range locks (key‑range) |
SQL Syntax Example:
BEGIN TRANSACTION;
UPDATE Account SET Balance = Balance - 5000 WHERE AccNo = 'A001';
UPDATE Account SET Balance = Balance + 5000 WHERE AccNo = 'A002';
IF @@ERROR <> 0
ROLLBACK TRANSACTION;
ELSE
COMMIT TRANSACTION;> ⚡ ৫-সেকেন্ড শর্টকাট (Exam Shortcut): > Isolation = DNRP – Dirty, Non‑repeatable, Repeatable, Phantom; উচ্চতর লেভেল বেশি অক্ষততা, কম পারফরম্যান্স।
> ⚠️ পরীক্ষার ফাঁদ (Common Exam Trap): > “SERIALIZABLE লেভেলে সব ডেডলক ঘটবে না।” – বাস্তবে SERIALIZABLE সর্বোচ্চ লকিং ব্যবহার করে, ডেডলক সম্ভাবনা বাড়ে; সঠিক উত্তর হল “ডেডলক ঘটতে পারে, তাই ডেডলক ডিটেকশন/রিজল্যুশন দরকার।”
পূর্ববর্তী পরীক্ষার প্রশ্ন ও সমাধান (Previous Exam Application)
প্রশ্ন: একটি ব্যাংক অ্যাপ্লিকেশনে READ COMMITTED আইসোলেশন ব্যবহার করা হয়েছে। ট্রানজ্যাকশন T1 SELECT Balance FROM Account WHERE AccNo='A001' চালায়, তারপর T2 একই রেকর্ড আপডেট করে কমিট করে। T1 আবার একই SELECT চালালে কী ফলাফল হবে? সমাধান: READ COMMITTED‑এ T1 প্রথম রিডের পরে শেয়ার লক রিলিজ হয়, তাই T2 আপডেট করতে পারে। T1 দ্বিতীয় রিডে আপডেটেড ব্যালেন্স দেখবে → non‑repeatable read ঘটেছে।
পরের ধাপ
এই টপিকে ৫টি প্রশ্ন অনুশীলন করুন
পড়া মনে আছে কি না, ছোট একটি সেটে দেখে নিন। প্রতিটি উত্তরের সাথে ব্যাখ্যা থাকবে, আর ভুল প্রশ্নগুলো রিভিশনের তালিকায় যাবে