MySQL ইনস্টলেশনের সাথে সাথে কিছু কনফিগারেশন টিউন করলে পারফরম্যান্স অনেক উন্নত হয়। নিচে গুরুত্বপূর্ণ সেটিংস দেওয়া হলো।
প্রদান করার আগে সতর্কতা
- একবারে এক সেটিং পরিবর্তন করুন।
SET GLOBALদিয়ে রানটাইমে চেঞ্জ করুন, সমস্যা হলে রিভার্ট সহজ।- কনফিগ ফাইল সঠিক সেকশন (
[mysqld]) এ লিখুন। - ডুপ্লিকেট সেটিং এড়ান, ভার্সন কন্ট্রোল ব্যবহার করুন।
মূল পারফরম্যান্স সেটিংস ([mysqld] সেকশন)
1. innodb_buffer_pool_size
সবচেয়ে গুরুত্বপূর্ণ। InnoDB ডেটা ও ইনডেক্স ক্যাশ করার মেমরি।
- সuggestion: RAM-এর ৭০-৮০% (ডেডিকেটেড DB সার্ভারের জন্য)।
- উদাহরণ: ৮GB RAM → ৫-৬GB।
SET GLOBAL innodb_buffer_pool_size = 6*1024*1024*1024;(৬GB)
2. innodb_log_file_size
রিডো লগ ফাইল সাইজ। ক্র্যাশ রিকভারি এবং রাইট পারফরম্যান্সে প্রভাব ফেলে।
- MySQL 5.6+ এ সাইজ লিমিট উঠিয়ে দেওয়া হয়েছে।
- সuggestion: ১-২GB (বড় ট্রানজেকশন ওয়ার্কলোডের জন্য)।
- বদলাতে সার্ভিস রিস্টার্ট লাগে (লগ ফাইল রিক্রিয়েট হয়)।
3. max_connections
সიმাল্টেনিয়াস কানেকশন লিমিট। ডিফল্ট ১৫১।
- "Too many connections" এরর এড়াতে বেড়ান।
- খুব বড় মান সার্ভারকে আনরেসপন্সিভ করতে পারে।
- অ্যাপ্লিকেশন কানেকশন পুলিং ব্যবহার করলে কম লাগে।
4. innodb_log_buffer_size
অনকমিটেড ট্রানজেকশনের লগ বাফার। ডিফল্ট ১MB।
- বড় ট্রানজেকশন (TEXT/BLOB) হলে বেড়ান (১৬-৬৪MB)।
- ডিস্ক I/O কমাতে সাহায্য করে।
5. innodb_flush_method
লগ ও ডেটা ডিস্কে ফ্লাশ করার মেথড।
O_DIRECT— RAID কন্ট্রোলার উইথ রাইট-ব্যাক ক্যাশের জন্য সেরা।O_DSYNC— সাধারণ পরিস্থিতির জন্য।- Sysbench দিয়ে বেনচমার্ক করুন।
6. query_cache_size
কোয়েরি ক্যাশ আকার। সuggestion: ০ (ডিজেবল)।
- কনকারেন্সি বটলनेक তৈরি করে।
- MySQL 5.6+ ডিফল্টে ডিজেবল।
- বিকল্প: Redis, Memcached এক্সটার্নাল ক্যাশ।
7. log_bin
বাইনারি লগ ইनेবল (রেপ্লিকেশন, পয়েন্ট-ইন-টাইম রিকভারির জন্য)।
expire_logs_days = 7— পুরনো লগ অটো ডিলিট।PURGE BINARY LOGS— ম্যানুয়াল ক্লিনআপ।
8. skip_name_resolve
DNS লুকআপ ডিজেবল (হোস্টনেম রেজোলুশন বন্ধ)।
- স্লো DNS কানেকশন লেটেন্সি বেড়ায়।
- GRANT স্টেটমেন্টে IP অ্যাড্রেস ব্যবহার করুন।
উপরোক্ত সেটিংস টিউন করে MySQL-র রিড/রাইট পারফরম্যান্স উল্লেখযোগ্যভাবে উন্নত করা সম্ভব। প্রতিটি পরিবর্তন পরীক্ষা করে প্রোডাকশনে লাগান।