Database Tutorials Transaction Isolation Levels গাইড ও নোট

293

Transaction Isolation Levels হল ডেটাবেস ট্রানজেকশনের আচরণ এবং বিভিন্ন ট্রানজেকশনগুলির মধ্যে ইন্টারঅ্যাকশন কীভাবে হবে তা নির্ধারণ করে। PostgreSQL ACID (Atomicity, Consistency, Isolation, Durability) প্রপার্টিজ মেনে চলে এবং Transaction Isolation Levels নিশ্চিত করে যে একাধিক ট্রানজেকশন একে অপরকে প্রভাবিত না করে নিরাপদে সম্পাদিত হয়। PostgreSQL মোট চারটি isolation level সমর্থন করে:


১. READ UNCOMMITTED

  • Description: এই isolation level এ একটি ট্রানজেকশন অন্য ট্রানজেকশনের অকমিটেড (অধরা) ডেটা পড়তে পারে। এটিকে "dirty read" বলা হয়, কারণ একটি ট্রানজেকশন অপর একটি ট্রানজেকশনের পরিবর্তন পড়ে, যদিও এটি কমিট হয়নি।
  • Use Case: সাধারণত এটি নিরাপদ নয় এবং খুব কম ব্যবহৃত হয়, কারণ এটি ডেটার অখণ্ডতা বজায় রাখতে পারে না।

    Example:

    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
    

    Issues:

    • Dirty Reads: আপনি এমন ডেটা পড়তে পারেন যা পরবর্তীতে রোলব্যাক করা হতে পারে।

২. READ COMMITTED

  • Description: এটি PostgreSQL এর ডিফল্ট isolation level। এখানে, একটি ট্রানজেকশন শুধুমাত্র কমিট হওয়া ডেটা পড়তে পারে। যদি একটি ট্রানজেকশন চলমান অবস্থায় অন্য একটি ট্রানজেকশন ডেটা পরিবর্তন করে, তবে প্রথম ট্রানজেকশন পরবর্তীতে সেই পরিবর্তিত ডেটা দেখতে পাবে।
  • Use Case: অধিকাংশ সাধারণ ডেটাবেস কাজের জন্য এটি যথেষ্ট নিরাপদ এবং এটি সাধারণত ব্যবহৃত হয়।

    Example:

    SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
    

    Issues:

    • Non-repeatable Reads: একই কুয়েরি একাধিক বার চালানোর সময় ফলাফল পরিবর্তিত হতে পারে (যতক্ষণ না ট্রানজেকশন কমিট হয়)।

৩. REPEATABLE READ

  • Description: এই isolation level এ, একবার একটি ট্রানজেকশন যেকোনো ডেটা পড়লে, সেই ডেটার মধ্যে কোনো পরিবর্তন পরবর্তী ট্রানজেকশনে দেখা যাবে না, যতক্ষণ না তা কমিট হয়। অর্থাৎ, একই কুয়েরি বারবার চালালেও ফলাফল এক রকম থাকবে।
  • Use Case: এটি একাধিক কনকারেন্ট ট্রানজেকশন এর মধ্যে consistency বজায় রাখতে উপকারী, যেখানে আপনি চান ডেটা একাধিকবার পড়ার সময় তা অপরিবর্তিত থাকবে।

    Example:

    SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
    

    Issues:

    • Phantom Reads: একই সিলেক্ট কুয়েরি একটি ট্রানজেকশনে পরবর্তী সময়ে নতুন রেকর্ড যুক্ত হলে, তা ওই ট্রানজেকশনে প্রভাব ফেলতে পারে।

৪. SERIALIZABLE

  • Description: এটি সবচেয়ে কঠোর isolation level। এখানে ট্রানজেকশনগুলি এমনভাবে সম্পাদিত হয় যেন তারা পরস্পরের মধ্যে একে অপরের ফলাফলের সাথে ইন্টারফেয়ার না করে। প্রতিটি ট্রানজেকশন পরস্পর থেকে বিচ্ছিন্নভাবে কাজ করে, এবং তাদের ফলাফল যেন সিরিয়ালি সম্পাদিত হয়েছে, এমন দেখায়।
  • Use Case: এটি সবচেয়ে সঠিক ডেটা consistency প্রদান করে এবং যেখানে অ্যাপ্লিকেশন বা সিস্টেমের জন্য ডেটার সর্বোচ্চ নির্ভুলতা প্রয়োজন, সেখানে এটি ব্যবহার করা হয়।

    Example:

    SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
    

    Issues:

    • Performance Overhead: এটা অন্য isolation level এর তুলনায় অনেক ধীর হতে পারে, কারণ এটি সম্পূর্ণভাবে ট্রানজেকশন গুলিকে সিরিয়ালাইজ করে। এতে ডেডলক (deadlock) বা অপেক্ষা (waiting) আরও বেশি হতে পারে।

৫. Isolation Levels এর মধ্যে পার্থক্য

Isolation LevelDirty ReadsNon-repeatable ReadsPhantom ReadsPerformanceUse Case
READ UNCOMMITTEDAllowedAllowedAllowedFastসাধারণত ব্যবহৃত নয়, কম প্রোডাক্টিভ সিস্টেমে ব্যবহার হতে পারে।
READ COMMITTEDNot AllowedAllowedAllowedGoodসাধারণ ওয়েব অ্যাপ্লিকেশন, ট্রানজেকশনাল সিস্টেমে ব্যবহৃত।
REPEATABLE READNot AllowedNot AllowedAllowedModerateট্রানজেকশনে ডেটার consistency বজায় রাখতে ব্যবহৃত।
SERIALIZABLENot AllowedNot AllowedNot AllowedSlowসর্বোচ্চ ডেটা consistency প্রয়োজন এমন সিস্টেমে ব্যবহার করা হয়।

৬. চয়ন করার সময় কি বিবেচনা করবেন?

  • Performance vs Consistency: যদি আপনি একটি পারফরম্যান্স-অধিক অ্যাপ্লিকেশন তৈরি করছেন এবং আপনি ছোট ডেটাসেট নিয়ে কাজ করছেন, তাহলে READ COMMITTED বা READ UNCOMMITTED উপযুক্ত হতে পারে। তবে, যদি ডেটা consistency অত্যন্ত গুরুত্বপূর্ণ হয় (যেমন ফাইন্যান্সিয়াল ট্রানজেকশন), তখন SERIALIZABLE নির্বাচন করা উচিত।
  • Data Integrity: SERIALIZABLE এর মাধ্যমে আপনি নিশ্চিত হতে পারবেন যে ট্রানজেকশনগুলির মধ্যে কোনো অপ্রত্যাশিত পরিবর্তন ঘটবে না।

সারাংশ

PostgreSQL এ Transaction Isolation Levels ডেটাবেসে একাধিক ট্রানজেকশন পরিচালনার পদ্ধতি এবং তাদের মধ্যে সম্পর্ক কীভাবে হবে তা নিয়ন্ত্রণ করে। READ UNCOMMITTED থেকে SERIALIZABLE পর্যন্ত, প্রতিটি isolation level ডেটা consistency এবং পারফরম্যান্সের মধ্যে একটি ব্যালান্স স্থাপন করে। আপনার প্রয়োজনে সঠিক isolation level নির্বাচন করে আপনি ডেটাবেসের কার্যকারিতা এবং নির্ভরযোগ্যতা নিশ্চিত করতে পারবেন।

Content added By
Promotion

Are you sure to start over?

Loading...