راهنمای کامل و عملی بهینه‌سازی MySQL (افزایش سرعت دیتابیس)



اجرای MySQL با تنظیمات بهینه به ما کمک می‌کند که بار پردازشی (لود) سرور را کاهش دهیم، مصرف منابع را کم کنیم و از کاهش سرعت سرور جلوگیری شود. یک پایگاه داده MySQL که به درستی پیکربندی نشده باشد، می‌تواند به راحتی تمام منابع سرور شما را مصرف کرده و باعث کندی شدید وب‌سایت یا اپلیکیشن شما شود.

این مقاله یک راهنمای عملی است که به شما نشان می‌دهد چگونه با استفاده از ابزارهای هوشمند و تنظیم صحیح پارامترهای کلیدی، دیتابیس MySQL خود را برای حداکثر کارایی بهینه کنید. برای انجام این تنظیمات، شما به دسترسی کامل به سرور نیاز دارید که با خرید سرور مجازی این امکان برای شما فراهم می‌شود.

 

قبل از شروع: پیش‌نیازهای ضروری

 

قبل از ویرایش هر فایلی، این سه مرحله را انجام دهید:

  1. دسترسی Root: شما به دسترسی root یا یک کاربر با دسترسی sudo نیاز دارید.
  2. پیدا کردن فایل کانفیگ (my.cnf): مسیر این فایل بسته به سیستم‌عامل شما متفاوت است. مسیرهای رایج عبارتند از:
    • اوبونتو/دبیان: /etc/mysql/my.cnf یا /etc/mysql/mysql.conf.d/mysqld.cnf
    • CentOS/AlmaLinux/Rocky: /etc/my.cnf
  3. تهیه نسخه پشتیبان (بسیار مهم): قبل از هر تغییری، یک نسخه پشتیبان از فایل کانفیگ خود تهیه کنید:
    sudo cp /etc/mysql/my.cnf /etc/mysql/my.cnf.backup

 

قدم اول: تشخیص با MySQLTuner

 

اسکریپت MySQLTuner دیتابیس MySQL شما را مورد ارزیابی قرار داده و پس از آن، پیشنهادهایی برای بهینه‌سازی و افزایش کارایی ارائه می‌دهد.

 

نصب و اجرای MySQLTuner

  1. ابزارهای مورد نیاز را نصب کنید:
    # برای اوبونتو/دبیان
    sudo apt install wget libstatistics-basic-perl
    
    # برای AlmaLinux/Rocky/CentOS
    sudo dnf install wget perl-Data-Dumper
  2. اسکریپت را دانلود و اجرایی کنید:
    wget http://mysqltuner.pl/ -O mysqltuner.pl
    chmod +x mysqltuner.pl
  3. اسکریپت را اجرا کنید (از شما نام کاربری و رمز عبور root دیتابیس خواسته می‌شود):
    ./mysqltuner.pl

گزارش این ابزار، به خصوص بخش “Recommendations” در انتها، نقشه راه شما برای مراحل بعدی خواهد بود.

 

قدم دوم: تنظیم پارامترهای کلیدی در my.cnf

فایل کانفیگ خود را با یک ویرایشگر مانند `nano` باز کنید و تغییرات زیر را بر اساس گزارش MySQLTuner و منابع سرور خود اعمال کنید.

۱. بهینه‌سازی حافظه (Memory)

 

innodb_buffer_pool_size

 

این مهم‌ترین پارامتر برای سرورهایی است که از موتور InnoDB استفاده می‌کنند. این مقدار، حجم حافظه RAM را که InnoDB برای کش کردن داده‌ها و ایندکس‌ها استفاده می‌کند، مشخص می‌کند.

  • مثال عملی: برای یک سرور با 8 گیگابایت رم که میزبان وب‌سایت و دیتابیس است (و وب‌سرور نیز مقداری رم مصرف می‌کند)، یک مقدار منطقی می‌تواند بین 4 تا 5 گیگابایت باشد.
  • نحوه افزودن به فایل my.cnf (در بخش [mysqld]):
    innodb_buffer_pool_size = 4G

 

key_buffer_size (برای MyISAM)

این پارامتر حافظه بیشتری را برای جداول مبتنی بر موتور MyISAM اختصاص می‌دهد. اگرچه امروزه InnoDB موتور اصلی است، اما برخی جداول سیستمی هنوز از MyISAM استفاده می‌کنند.

  • مثال عملی: برای اکثر سرورها که عمدتا از InnoDB استفاده می‌کنند، یک مقدار ثابت مانند 32M یا 64M برای این پارامتر کافی است. نیازی به تخصیص مقادیر بالا مانند ۲۵٪ کل رم نیست.
  • نحوه افزودن به فایل my.cnf:
    key_buffer_size = 32M

 

۲. بهینه‌سازی اتصالات و رشته‌ها (Threads)

max_connections

 

این پارامتر حداکثر تعداد اتصالات همزمان را تنظیم می‌کند. هر اتصال مقداری رم مصرف می‌کند، پس این عدد را بی‌رویه بالا نبرید.

  • مثال عملی: گزارش MySQLTuner را نگاه کنید. اگر مقدار `Max_used_connections` (بیشترین اتصالات استفاده شده) را 50 نشان می‌دهد، تنظیم `max_connections` روی 75 یا 100 یک انتخاب منطقی است که فضای کافی برای رشد آینده را نیز فراهم می‌کند.
  • نحوه افزودن به فایل my.cnf:
    max_connections = 100

 

thread_cache_size

این پارامتر رشته‌های استفاده شده را در یک حافظه پنهان نگه می‌دارد تا برای اتصالات بعدی مجددا استفاده شوند. این کار در سرورهای پر ترافیک می‌تواند عملکرد را بهبود بخشد.

  • مثال عملی: یک نقطه شروع خوب، تنظیم آن روی 8 است. اگر گزارش MySQLTuner نشان می‌دهد که `Threads_created` در مقایسه با `Connections` عدد بزرگی است، می‌توانید این مقدار را به 16 یا بالاتر افزایش دهید.
  • نحوه افزودن به فایل my.cnf:
    thread_cache_size = 16

 

۳. بهینه‌سازی کوئری‌ها و جداول

query_cache_size

 

نکته بسیار مهم: این ویژگی در نسخه‌های جدید MySQL (8.0 و بالاتر) **حذف شده است** زیرا در اکثر موارد باعث کاهش عملکرد می‌شد. اگر از نسخه جدید MySQL استفاده می‌کنید، اطمینان حاصل کنید که این پارامتر غیرفعال است.

  • نحوه افزودن به فایل my.cnf برای غیرفعال‌سازی:
    query_cache_type = 0
    query_cache_size = 0

 

برای مدیریت بهتر دیتابیس و اجرای کوئری‌های بهینه، خرید vps آمریکا با دسترسی کامل به شما این امکان را می‌دهد که تمام جنبه‌های سرور خود را کنترل کنید.