Locking Mechanism এবং Deadlock Avoidance

Database Tutorials - ডিবি২ (DB2) DB2 Transactions এবং Locking Mechanisms |
232
232

DB2 ডেটাবেস সিস্টেমে Locking Mechanism এবং Deadlock Avoidance দুটি গুরুত্বপূর্ণ প্রক্রিয়া, যা ডেটাবেসের একযোগিতায় কার্যকর এবং নির্ভরযোগ্য ট্রানজেকশন প্রক্রিয়া পরিচালনা করতে সহায়তা করে। এই প্রক্রিয়াগুলি ডেটা সুরক্ষা, অ্যাক্সেস কন্ট্রোল এবং ট্রানজেকশন সমন্বয়ের জন্য অপরিহার্য। এখানে DB2-এ Locking Mechanism এবং Deadlock Avoidance নিয়ে বিস্তারিত আলোচনা করা হলো।


Locking Mechanism

Locking হল এমন একটি প্রক্রিয়া যার মাধ্যমে একাধিক ট্রানজেকশন একই ডেটাতে একযোগভাবে কাজ করার সময় ডেটা সুরক্ষিত থাকে এবং এর সাথে কোনও অপ্রত্যাশিত পরিবর্তন বা কনফ্লিক্ট হয় না। DB2 এ Locking Mechanism ডেটাবেসের ডেটা এক্সেস এবং ট্রানজেকশন সমন্বয়ের জন্য গুরুত্বপূর্ণ ভূমিকা পালন করে।

Locking Types

  1. Shared Lock (S Lock):
    • Shared Lock এমন একটি লক যা একাধিক ট্রানজেকশনকে ডেটা পড়তে (READ) অনুমতি দেয়, কিন্তু লেখার (WRITE) অনুমতি দেয় না।
    • একাধিক ট্রানজেকশন একই রেকর্ডে Shared Lock পেতে পারে এবং তারা একে অপরের কাছে ডেটা পড়তে পারে, তবে কেউই সেই ডেটা পরিবর্তন করতে পারে না।
  2. Exclusive Lock (X Lock):
    • Exclusive Lock শুধুমাত্র একটি ট্রানজেকশনকে ডেটাতে লেখার (WRITE) অনুমতি দেয় এবং অন্য কোনও ট্রানজেকশনকে সেই ডেটা পড়তে বা পরিবর্তন করতে দেয় না।
    • একটি Exclusive Lock অন্য কোনও Lock এর সাথে সহাবস্থান করতে পারে না, অর্থাৎ একমাত্র যে ট্রানজেকশন Lock পেয়েছে, কেবল সে ট্রানজেকশন ডেটার উপর কাজ করতে পারবে।
  3. Intent Lock:
    • Intent Lock হল একটি পূর্বাভাস লক যা ট্রানজেকশনকে ডেটা তলাশ করার (Check for lock availability) সময় ব্যবহার করা হয়। এটি Shared বা Exclusive লক আনার আগে সম্ভাব্য এক্সক্লুসিভ বা শেয়ারড লক ব্যবহারের উদ্দেশ্য নির্দেশ করে।

Lock Granularity

Locking এর বিভিন্ন স্তর বা গ্রানুলারিটি থাকতে পারে:

  1. Row-level Lock:
    • একটি নির্দিষ্ট রেকর্ড বা সারি (Row) লক করা হয়। এটি ট্রানজেকশনকে একে একে বিভিন্ন রেকর্ডে কাজ করতে দেয়।
  2. Table-level Lock:
    • সম্পূর্ণ টেবিল লক করা হয়। একাধিক রেকর্ডে কাজ করা হলেও ডেটার অন্যান্য রেকর্ড বা সারি মডিফাই বা অ্যাক্সেস করা যাবে না।
  3. Page-level Lock:
    • এটি একটি পেজ লেভেল লক যেখানে এক পেজের (যা একাধিক রেকর্ড ধারণ করতে পারে) সমস্ত রেকর্ডে লক আরোপ করা হয়।

Deadlock Avoidance

Deadlock হল এমন একটি পরিস্থিতি যেখানে দুই বা তার বেশি ট্রানজেকশন একে অপরকে অপেক্ষা করে থাকে, এবং তাদের মধ্যে কোন ট্রানজেকশনই সম্পূর্ণ হয় না। উদাহরণস্বরূপ, একটি ট্রানজেকশন রেকর্ড A এর উপর লক ধরে রেখেছে এবং R রেকর্ড B এর জন্য অপেক্ষা করছে, অথচ অন্য একটি ট্রানজেকশন R এর উপর লক ধরে রেখেছে এবং A রেকর্ডের জন্য অপেক্ষা করছে। এটি একটি "Deadlock" সৃষ্টি করে, যার ফলে সিস্টেমের কার্যকারিতা বন্ধ হয়ে যায়।

DB2 এ Deadlock Avoidance কৌশল

  1. Deadlock Detection:
    • DB2 একটি ডেডলক ডিটেকশন পদ্ধতি ব্যবহার করে, যা সিস্টেমে ডেডলক সিচুয়েশন শনাক্ত করে এবং সংশ্লিষ্ট ট্রানজেকশনগুলোকে বাতিল (Rollback) করে। DB2 ডেডলক শনাক্ত করতে একটি বিশেষ এলগরিদম ব্যবহার করে, যা সমস্ত ট্রানজেকশন এবং তাদের লক সম্পর্কের মধ্যে সংঘর্ষ চিহ্নিত করে।
  2. Timeout Mechanism:
    • DB2 তে নির্দিষ্ট সময়ের মধ্যে লক মুক্ত না হলে সেটি অটোমেটিকভাবে timeout হয়ে যায় এবং ট্রানজেকশনটি রোলব্যাক (rollback) হয়ে যায়। এটি ডেডলক পরিস্থিতি এড়ানোর একটি কার্যকর কৌশল।
  3. Lock Timeout Settings:

    • DB2-এ LOCKTIMEOUT প্যারামিটার ব্যবহার করে ট্রানজেকশন লক টাইমআউট নির্ধারণ করা যায়। এটি সিস্টেমকে প্রতিটি লক নির্দিষ্ট সময়ের মধ্যে মুক্ত করার নির্দেশ দেয়, যার ফলে ডেডলক পরিস্থিতি এড়ানো যায়।

    উদাহরণ:

    SET LOCKTIMEOUT = 10;
    

    এখানে, LOCKTIMEOUT = 10 মানে হচ্ছে ১০ সেকেন্ডের মধ্যে যদি লক মুক্ত না হয়, তবে ট্রানজেকশনটি টাইমআউট হবে এবং বাতিল হয়ে যাবে।

  4. Trickling Deadlock Prevention:
    • এই কৌশলে ট্রানজেকশনগুলোকে লক প্রক্রিয়া আরম্ভ করার আগে বিশেষ কিছু শর্ত অনুযায়ী লক প্রাপ্তির জন্য অপেক্ষা করতে বলা হয়। এতে একাধিক ট্রানজেকশন একই সময়ে লক অর্জন করতে পারে না, ফলে ডেডলক সৃষ্টি হওয়ার সম্ভাবনা কমে যায়।
  5. Lock Ordering:

    • DB2 একটি কৌশল ব্যবহার করে, যেখানে ট্রানজেকশনগুলো নির্দিষ্ট অর্ডারে লক গ্রহণ করে। ট্রানজেকশনগুলি যদি নির্দিষ্ট অর্ডারে লক নেয়, তবে ডেডলক সৃষ্টি হওয়ার সম্ভাবনা কমে যায়।

    উদাহরণ:

    • ট্রানজেকশন A প্রথমে টেবিল X-এ লক নেবে, তারপর টেবিল Y-এ লক নিবে।
    • ট্রানজেকশন B প্রথমে টেবিল Y-এ লক নেবে, তারপর টেবিল X-এ লক নিবে।
    • এই কৌশলটি ডেডলক থেকে বাঁচাতে সাহায্য করবে।

DB2 Locking Mechanism এবং Deadlock Avoidance Best Practices

  1. স্বতন্ত্র লক ব্যবহার: ছোট, দ্রুত লক ব্যবহার করুন যেমন Row-level Lock, যা সিস্টেমের পারফরম্যান্স কমাবে না এবং ডেডলক সৃষ্টি এড়াবে।
  2. লক সময় সীমা নির্ধারণ: লক টাইমআউট এবং ডেডলক শনাক্তকরণের জন্য সঠিক সেটিংস ব্যবহার করুন।
  3. লক অর্ডারিং ব্যবহার: ট্রানজেকশনগুলোকে একটি নির্দিষ্ট অর্ডারে লক নিতে উৎসাহিত করুন, যাতে ডেডলক পরিস্থিতি এড়ানো যায়।
  4. লক শৃঙ্খলা তৈরি: DB2-এ লকিং পলিসি তৈরি করুন, যা ডেডলককে দ্রুত শনাক্ত করতে সহায়তা করবে এবং সিস্টেমের কার্যকারিতা রক্ষা করবে।

সারসংক্ষেপ

DB2 তে Locking Mechanism এবং Deadlock Avoidance ডেটাবেসের কার্যকারিতা এবং সুরক্ষার জন্য অত্যন্ত গুরুত্বপূর্ণ। Locking ডেটার সুরক্ষার জন্য ট্রানজেকশন সমন্বয় করতে সাহায্য করে এবং Deadlock Avoidance কৌশল ডেডলক পরিস্থিতি রোধ করতে সহায়তা করে। সঠিক lock types, lock ordering, এবং timeout settings ব্যবহার করে ডেটাবেসের কার্যকারিতা এবং পারফরম্যান্স বজায় রাখা সম্ভব।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion