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

MySQL-এ স্লো কোয়েরি লগিং সেট আপ করার পদ্ধতি

এই গাইডটি ব্যাখ্যা করবে কীভাবে MySQL-এ "স্লো কোয়েরি" লগিং সেট আপ করতে হয় যাতে আপনি বুঝতে পারেন কোন কোয়েরিগুলো স্লোডাউনের কারণ বানাচ্ছে।

আপনি যদি একটি প্রোডাকশন MySQL সার্ভার চালান বা অ্যাডমিনিস্ট্রেট করেন, তবে এটি কখনও কখনও কিছুটা ধীরে চলে, এবং কেন তা বুঝতে খুব সময় লাগতে পারে। ডাটাবেসকে ধীর করার কোয়ারীটি শনাক্ত করা কঠিন হতে পারে। MySQL-এ আপনাকে সাহায্য করার জন্য একটি অপশন রয়েছে। এতে স্লো কোয়ারী লগ করার অপশন থাকে। এইভাবে যখন আপনার ডাটাবেস সার্ভার স্বাভাবিক চেয়ে ধীর চলে, আপনি এই লগ ফাইলটি একটি টেক্সট এডিটরে খুলে দেখতে পারেন কোন কোয়ারীগুলি ধীর গতিতে চলছে। চলুন দেখি কীভাবে এটি সেট আপ করতে হয়।

প্রথমে আপনার MySQL সার্ভারের কনফিগারেশন ফাইল my.cnf খুলুন। লিনাক্সে এটি সাধারণত /etc ডিরেক্টরিতে থাকে। চেক করুন প্যারামিটার log-slow-queries ইতিমধ্যে সেট করা আছে কিনা। না থাকলে, এটিকে নিচের মতো সেট করুন:

log-slow-queries = /var/log/mysql/mysql-slow.log

আপনাকে কোয়ারীকে স্লো কোয়ারী হিসেবে বিবেচনার জন্য সময়সীমাও সেট করতে হবে। আমার সার্ভারে আমি এটি ৩০ সেকেন্ডে সেট করেছি, নিচের মতো:

long_query_time = 30

MySQL সার্ভার রিস্টার্ট করুন, এবং তারপর mysql-slow.log ফাইলটি পর্যবেক্ষণ করুন। যখনই কোন কোয়ারী সম্পন্ন হতে ৩০ সেকেন্ড বা my.cnf-এ আপনার সেট করা সময়ের চেয়ে বেশি সময় নেয়, তখন সেই কোয়ারী mysql-slow.log-এ লগ হবে। এখন MySQL কোয়ারী ডিবাগ করা আপনার জন্য অনেক সহজ এবং দ্রুত হবে। মনে রাখবেন এই ফাইলটি একদম একদম চেক করবেন। কিভাবে একটি ক্রন জব সেট আপ করবেন যাতে এটি প্রতিটা সপ্তাহে একবার আপনাকে মেইল করে দেবে, সেটাও চিন্তা করুন।

  1. MySQL-এ TIMESTAMP কলাম সেট আছে কিনা যাচাই করা (WHERE DueDate > 0)

  2. MySQL-এ সতর্কবার্তা (warnings) দমন করার পদ্ধতি

  3. MySQL কোয়ারীতে 'Empty set' প্রতিস্থাপন করা

  4. MySQL-এ FORMAT() ব্যবহার করে কaarেন্সি রেকর্ড ফরম্যাট করা