MySQLi-তে Slow Query Logging হল একটি প্রক্রিয়া যার মাধ্যমে আপনি সেই কুয়েরিগুলোর লগ (log) দেখতে পারেন, যেগুলি ডাটাবেসে চলতে সময় বেশি নেয়। এটি ডাটাবেস পারফরম্যান্স অপটিমাইজেশনের জন্য একটি গুরুত্বপূর্ণ টুল। স্লো কুয়েরি লগিং-এ স্লো কুয়েরির সময় ট্র্যাক করা হয় এবং সেই অনুযায়ী সেগুলি অপটিমাইজ করা যায়।
Slow Query Logging কী?
Slow Query Logging হল MySQL এর একটি ফিচার, যা ডাটাবেসে আসা সমস্ত কুয়েরি রেকর্ড করে, তবে শুধুমাত্র সেই কুয়েরিগুলির রেকর্ড রাখা হয়, যেগুলি পূর্বনির্ধারিত সময়ের চেয়ে বেশি সময় নেয়। এটি ডাটাবেস অ্যাডমিনিস্ট্রেটরদের (DBAs) সাহায্য করে বুঝতে কোন কুয়েরি বা অপারেশনটি পারফরম্যান্স সমস্যা তৈরি করছে এবং কিভাবে তা দ্রুততর করা যায়।
Slow Query Logging সক্রিয় করা
MySQLi-তে স্লো কুয়েরি লগিং সক্রিয় করার জন্য আপনাকে MySQL সার্ভারে কিছু কনফিগারেশন পরিবর্তন করতে হবে। নিচে তার উদাহরণ দেওয়া হলো:
1. MySQL Configuration File (my.cnf বা my.ini) এ পরিবর্তন:
MySQL সার্ভারের কনফিগারেশন ফাইলে স্লো কুয়েরি লগিং সক্রিয় করতে আপনি slow_query_log এবং long_query_time অপশন ব্যবহার করতে পারেন।
[mysqld]
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow-query.log
long_query_time = 2
এখানে:
slow_query_log = 1স্লো কুয়েরি লগিং চালু করবে।slow_query_log_fileস্লো কুয়েরি লগের ফাইলের অবস্থান নির্ধারণ করে।long_query_time = 2নির্দেশ করে যে, ২ সেকেন্ডের বেশি সময় নিলেই কুয়েরিটি স্লো কুয়েরি হিসেবে লগ হবে।
2. MySQL Command Line থেকে স্লো কুয়েরি লগিং সক্রিয় করা:
যদি আপনি কনফিগারেশন ফাইল পরিবর্তন করতে না চান, তবে MySQL কমান্ড লাইনের মাধ্যমে স্লো কুয়েরি লগিং চালু করা সম্ভব।
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL slow_query_log_file = '/var/log/mysql/slow-query.log';
SET GLOBAL long_query_time = 2;
এই কমান্ডগুলির মাধ্যমে স্লো কুয়েরি লগিং চালু হবে এবং ২ সেকেন্ডের বেশি সময় নিলেই কুয়েরি লগ হবে।
Slow Query Log File পর্যালোচনা
একবার স্লো কুয়েরি লগিং চালু হলে, স্লো কুয়েরিগুলি একটি নির্দিষ্ট ফাইলে সংরক্ষিত হবে, যেমন /var/log/mysql/slow-query.log (যা আপনি কনফিগারেশনে নির্দিষ্ট করেছিলেন)। এই ফাইলটি আপনি পর্যালোচনা করে স্লো কুয়েরির তথ্য পেতে পারেন।
স্লো কুয়েরির লগ সাধারণত এমন কিছু তথ্য ধারণ করে:
- কুয়েরির টেক্সট
- কুয়েরি সম্পাদন করতে সময়
- কুয়েরি এক্সিকিউট করার জন্য সার্ভার কতটা সময় নিয়েছে
- কুয়েরি সম্পাদনের সময় সার্ভারের স্টেটাস
উদাহরণ লগ ফাইল:
# Time: 2024-12-15T10:00:00Z
# Query_time: 3.012358 Lock_time: 0.000012 Rows_sent: 10 Rows_examined: 1000
SET timestamp=1605434599;
SELECT * FROM users WHERE status = 'active' ORDER BY created_at DESC LIMIT 10;
এখানে Query_time: 3.012358 নির্দেশ করছে যে কুয়েরিটি ৩ সেকেন্ডের বেশি সময় নিয়েছে।
Slow Query Log Analyzer ব্যবহার করা
Slow Query Log বিশ্লেষণ করতে বিভিন্ন টুল এবং স্ক্রিপ্ট ব্যবহার করা যেতে পারে, যেমন:
mysqldumpslow: এটি একটি কমান্ড-লাইন টুল যা স্লো কুয়েরি লগ ফাইলের বিশ্লেষণ করে। এটি সহজেই সবচেয়ে সময়সাপেক্ষ কুয়েরিগুলি শনাক্ত করতে সাহায্য করে।
উদাহরণ:
mysqldumpslow -s t /var/log/mysql/slow-query.logএখানে
-s tঅপশনটি কুয়েরিগুলিকে সময়ের ভিত্তিতে সাজানোর জন্য ব্যবহার করা হয়।- Percona Toolkit: এটি একটি শক্তিশালী টুলকিট যা স্লো কুয়েরি লগ বিশ্লেষণ ও অপটিমাইজেশনের জন্য বিভিন্ন ধরনের টুল প্রদান করে।
Slow Query Logging এর ব্যবহারিক সুবিধা
- পারফরম্যান্স অপটিমাইজেশন: স্লো কুয়েরি লগিং ব্যবহার করে আপনি সহজেই দীর্ঘ সময় নেয়ার কুয়েরিগুলিকে শনাক্ত করতে পারেন এবং তাদের অপটিমাইজ করে সার্ভারের পারফরম্যান্স বাড়াতে পারেন।
- ইনডেক্সিং বা কুয়েরি রেফ্যাক্টরিং: স্লো কুয়েরিগুলির মধ্যে যেগুলিতে ইনডেক্সের অভাব রয়েছে বা অপ্রয়োজনীয় ডাটা ফেচ হচ্ছে, সেগুলিকে ইনডেক্স যোগ করা বা কুয়েরি রেফ্যাক্টরিং করা যায়।
- দ্রুত সমাধান: স্লো কুয়েরি লগিং সরাসরি সমস্যার মূল নির্ধারণ করতে সাহায্য করে, যাতে সমস্যা দ্রুত সমাধান করা যায়।
MySQLi-তে স্লো কুয়েরি লগিং ব্যবহারের মাধ্যমে আপনি আপনার ডাটাবেসের কার্যক্ষমতা ট্র্যাক করতে পারেন এবং যেসব কুয়েরি পারফরম্যান্স ইস্যু তৈরি করছে সেগুলির অপটিমাইজেশন করতে পারেন।
Read more