يمكنك اختيار تحسين خادم MySQL على المستوى الأساسي أو على المستوى المتقدم.
يمكن تحسين خادم MySQL على مستوى أساسي باستخدام سكربت MySQL tuner.
تحميل السكربت باستخدام الأمر:
wget https://github.com/major/MySQLTuner-perl/zipball/master
تشغيل الأوامر التالية:
unzip master
cd major-MySQLTuner*
chmod +x mysqltuner.pl
perl mysqltuner.pl
السكربت سيفحص حالة MySQL ويقدم لك المتغيرات التي تحتاج إلى تعديلها لتحسين أداء MySQL.
لتنفيذ تحسين على مستوى متقدم، يجب ضبط خادم MySQL بناءً على التطبيقات واستخدام الموارد. فيما يلي بعض المتغيرات النظامية المهمة التي تحتاج إلى تعديل للاستخدام العادي:
table_cache: كلما وصل MySQL إلى جدول، يتم تخزين الجدول في الذاكرة المؤقتة. يمكن استرجاع البيانات بشكل أسرع من الجداول التي يتم الوصول إليها بشكل متكرر إذا كانت مخزنة في الذاكرة المؤقتة.
يمكنك التحقق مما إذا كان النظام يحتاج إلى زيادة قيمة table_cache من خلال فحص متغيرات الحالة open_tables وopened_tables خلال أوقات الذروة. استخدم الأمر:
SHOW STATUS LIKE "open%tables%";
open_tables هو عدد الجداول المفتوحة في الذاكرة المؤقتة، في حين أن opened_tables هو إجمالي عدد الجداول المفتوحة. نظرًا لأن MySQL يدعم المعالجة المتعددة، يمكن تنفيذ عدة استعلامات على نفس الجدول في نفس الوقت. لذلك ستفتح كل من هذه الاستعلامات جدولًا.
القيمة الافتراضية لـ table_cache هي 64. إذا كان لديك ذاكرة RAM كافية على الخادم الخاص بك، يمكنك زيادة قيمة table_cache. سيؤدي ذلك إلى تقليل إجمالي عدد الجداول المفتوحة عن طريق نقل هذه الجداول إلى الذاكرة المؤقتة.
query_cache_size: إذا كان لديك استعلام MySQL يتم تنفيذه بشكل متكرر من قبل موقعك، يمكن تعيين MySQL لتخزين نتائج هذا الاستعلام في الذاكرة المؤقتة.
يمكنك تمكين التخزين المؤقت للاستعلامات عن طريق تعيين المتغير server query_cache_type إلى 1 وتعيين حجم الذاكرة المؤقتة في المتغير query_cache_size. إذا تم تعيين أي من القيمتين إلى 0، فلن يتم تمكين التخزين المؤقت للاستعلامات.
key_buffer_size: هذا هو حجم الذاكرة المؤقتة المستخدمة من قبل جميع الفهارس. من الناحية المثالية، يجب تعيينه إلى ربع الذاكرة المتاحة على الأقل أو أكثر.
الحل الأمثل هو الحفاظ على النسبة التالية: Key_reads : Key_read_requests يجب أن تكون 1:100 وKey_writes / Key_write_requests يجب أن تكون أقل من 1 دائمًا.
إذا كانت قيمة Key_reads عالية مقارنةً بـ Key_read_requests، فأنت بحاجة إلى زيادة key_buffer_size.