MySQL-এ InnoDB স্টোরেজ ইঞ্জিনের গ্লোবাল লক, ট্রানজ্যাকশন, এবং পারফরম্যান্স মনিটরিং
InnoDB-এর আંતরিক অবস্থা, লক, ট্রানজ্যাকশন, বাফার পুল, লগ, I/O ইত্যাদি বিস্তারিত জানতে SHOW ENGINE INNODB STATUS কমান্ড ব্যবহার করা হয়। এটি ডিবাগিং এবং পারফরম্যান্স টিউনিং-এ খুব সহায়ক।
কমান্ড
mysql> SHOW ENGINE INNODB STATUS\G
\G ব্যবহার করা হয় ভার্টিক্যাল আউটপুটের জন্য (আউটপুট খুব লম্বা হয়)।
আউটপুটের প্রধান সেকশনসমূহ
- BACKGROUND THREAD: মাস্টার থ্রেড লুপ, লগ ফ্লাশ, ইত্যাদি
- SEMAPHORES: লক ওয়েট স്റ്റ্যাটিস্টিক্স (RW-shared, RW-excl, spins, OS waits)
- TRANSACTIONS: একটিভ ট্রানজ্যাকশন তালিকা, লক স্ট্রাকচার, রো লক, ট্রানজ্যাকশন আইডি
- FILE I/O: I/O থ্রেড স্টেট, পেন্ডিং রিড/রাইট, fsync কাউন্ট
- INSERT BUFFER & ADAPTIVE HASH INDEX: ইন্সার্ট বাফার এবং হ্যাশ ইনডেক্স স্ট্যাটস
- LOG: লগ সিকোয়েন্স নাম্বর (LSN), চেকপয়েন্ট, লগ ফ্লাশ
- BUFFER POOL AND MEMORY: বাফার পুল সাইজ, ফ্রি পেজ, ডার্টি পেজ, রিড/রাইট স্পিড
- ROW OPERATIONS: ইনসার্ট, আপডেট, ডিলিট, রিড কাউন্ট (per second)
নমুনা আউটপুট (সংক্ষিপ্ত)
*************************** 1. row *************************** Type: InnoDB Name: Status: ===================================== 2019-01-23 14:46:58 0x2914 INNODB MONITOR OUTPUT ===================================== ... ------------ TRANSACTIONS ------------ Trx id counter 60219 Purge done for trx's n:o < 60218 undo n:o < 0 state: running but idle History list length 32 LIST OF TRANSACTIONS FOR EACH SESSION: ---TRANSACTION 284507225290560, not started 0 lock struct(s), heap size 1136, 0 row lock(s) ... ---------------------------- END OF INNODB MONITOR OUTPUT ============================
ব্যবহার: ডেডলক ডিটেকশন, লম্বা চলমান ট্রানজ্যাকশন খুঁজে বের করা, লক কনটেনশন বিশ্লেষণ, বাফার পুল হিট রেশিও চেক ইত্যাদিতে এটি অপরিহার্য।