কম্পিউটার টিউটোরিয়াল

MySQL-এ একাধিক টেবিল লক করা (LOCK TABLES)

MySQL-এ একসাথে একাধিক টেবিল লক করতে LOCK TABLES কমান্ড ব্যবহার করুন।

সিনট্যাক্স

LOCK TABLES table1 WRITE, table2 WRITE, table3 READ, ...;
  • WRITE - এক্সক্লুসিভ লক (রিড/রাইট উভয় ব্লক)
  • READ - শেয়ার্ড লক (রিড অনুমতি, রাইট ব্লক)

উদাহরণ

CREATE TABLE OrderDemo (
    OrderId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    OrderPrice INT,
    OrderDateTime DATETIME
);

-- দুইটি টেবিল লক
LOCK TABLES OrderDemo WRITE, utfdemo WRITE;

লক সক্রিয় থাকতে নতুন টেবিল তৈরি করা যাবে না

CREATE TABLE LockTableDemo (UserId INT);
-- ERROR 1100 (HY000): Table 'LockTableDemo' was not locked with LOCK TABLES

লক রিলিজ

UNLOCK TABLES;

গুরুত্বপূর্ণ সীমাবদ্ধতা

  • ট্রানজ্যাকশন-সেফ নয়: LOCK TABLES এক্টিভ ট্রানজ্যাকশন কমিট করে
  • সেশন-স্কোপড: কানেকশন বন্ধ হলে অটো আনলক
  • রিপ্লিকেশন সমস্যা: ROW-based রিপ্লিকেশনে সমস্যা হতে পারে
  • পারফরম্যান্স: কাঙ্কারেন্সি কমায়

আধুনিক বিকল্প

রো-লেভেল লকিং için SELECT ... FOR UPDATE বা SELECT ... LOCK IN SHARE MODE ট্রানজ্যাকশনের ভিতরে ব্যবহার করুন।

START TRANSACTION;
SELECT * FROM OrderDemo WHERE OrderId = 1 FOR UPDATE;
-- শুধু এই রো লক থাকবে
COMMIT;
  1. MySQL-এ একাধিক কলাম দিয়ে কন্ডিশনাল লজিক (IF ফাংশন)

  2. MySQL-এ REPLACE() ফাংশন দিয়ে ক্যারেক্টার রিপ্লেস করা

  3. MySQL에서 일괄 업데이트(Batch Update) 수행하기

  4. MySQL-এ টেবিলের অস্তিত্ব যাচাই করা