يتضمن تحسين أداء MySQL العديد من الجوانب. تشرح هذه المقالة بعض المعلمات الأساسية في MySQL. هذه المعلمات، إلى حد ما، هي المعلمات الأساسية التي تحدد أداء قاعدة بيانات MySQL. غالبًا ما نواجه مشكلات في الأداء أثناء إدارة قواعد البيانات وتطويرها، وهو ما يتضمن تحسين أداء MySQL. من خلال البحث عن المعلومات على الإنترنت ومحاولات المؤلف الخاصة، أعتقد أن معلمات النظام التالية أكثر أهمية:
المعلمة الرئيسية الأولى: back_log
عدد الاتصالات التي يتطلبها MySQL. يعمل هذا عندما يتلقى مؤشر ترابط MySQL الرئيسي الكثير من طلبات الاتصال في فترة زمنية قصيرة، ثم يستغرق مؤشر الترابط الرئيسي بعض الوقت (ولو لفترة وجيزة) للتحقق من الاتصالات وبدء موضوع جديد.
تشير قيمة back_log إلى عدد الطلبات التي يمكن تخزينها في المكدس في فترة زمنية قصيرة قبل أن تتوقف MySQL مؤقتًا عن الرد على الطلبات الجديدة. فقط إذا كنت تتوقع العديد من الاتصالات في فترة زمنية قصيرة، فأنت بحاجة إلى زيادتها، بمعنى آخر، هذه القيمة هي حجم قائمة انتظار الاستماع لاتصالات TCP/IP الواردة. نظام التشغيل الخاص بك له حد خاص به على حجم قائمة الانتظار هذه. لن يكون لمحاولة تعيين back_log أعلى من الحد المسموح به لنظام التشغيل الخاص بك أي تأثير.
عند ملاحظة قائمة العمليات المضيفة لديك والعثور على عدد كبير من 264084 مستخدمًا غير مصادق عليه |.xxx.xxx.xxx.xxx |. الاتصال |. تسجيل الدخول NULL |. القيمة الافتراضية هي 50، وقمت بتغييرها إلى 500.
المعلمة الرئيسية الثانية: Interactive_timeout
عدد الثواني التي ينتظرها الخادم لاتخاذ إجراء بشأن الاتصال التفاعلي قبل إغلاقه. يتم تعريف العميل التفاعلي على أنه عميل يستخدم خيار CLIENT_INTERACTIVE لـ mysql_real_connect(). القيمة الافتراضية هي 28800، وقمت بتغييرها إلى 7200.
المعلمة الرئيسية الثالثة: key_buffer_size
يتم تخزين كتل الفهرس مؤقتًا ومشاركتها بواسطة جميع سلاسل الرسائل. key_buffer_size هو حجم المخزن المؤقت المستخدم لكتل الفهرس، قم بزيادته للحصول على معالجة أفضل للفهرس (لجميع عمليات القراءة والكتابة المتعددة)، بقدر ما تستطيع. إذا جعلته كبيرًا جدًا، فسيبدأ النظام في الترحيل وسيتباطأ حقًا. القيمة الافتراضية هي 8388600 (8M)، ومضيف MySQL لديه ذاكرة سعة 2 جيجابايت، لذلك قمت بتغييرها إلى 402649088 (400 ميجابايت).
المعلمة الرئيسية الرابعة: max_connections
عدد العملاء المتزامنين المسموح به. تؤدي زيادة هذه القيمة إلى زيادة عدد واصفات الملفات المطلوبة بواسطة mysqld. يجب زيادة هذا الرقم، وإلا فسوف ترى أخطاء كثيرة جدًا في الاتصالات بشكل متكرر. القيمة الافتراضية هي 100، وقمت بتغييرها إلى 1024.
المعلمة الرئيسية الخامسة: Record_buffer
يخصص كل مؤشر ترابط يقوم بإجراء فحص تسلسلي مخزنًا مؤقتًا بهذا الحجم لكل جدول يقوم بمسحه. إذا قمت بإجراء الكثير من عمليات الفحص المتسلسلة، فقد ترغب في زيادة هذه القيمة. القيمة الافتراضية هي 131072 (128 كيلو)، وقمت بتغييرها إلى 16773120 (16 ميجا)
المعلمة الرئيسية السادسة:sort_buffer
يتم تخصيص مخزن مؤقت بهذا الحجم لكل مؤشر ترابط يحتاج إلى الفرز. تؤدي زيادة هذه القيمة إلى تسريع عمليات ORDER BY أو GROUP BY. القيمة الافتراضية هي 2097144 (2M)، وقمت بتغييرها إلى 16777208 (16M).
المعلمة الرئيسية السابعة: table_cache
عدد الجداول المفتوحة لجميع المواضيع. تؤدي زيادة هذه القيمة إلى زيادة عدد واصفات الملفات المطلوبة بواسطة mysqld. يتطلب MySQL واصفين للملفات لكل جدول مفتوح فريد. القيمة الافتراضية هي 64، وقمت بتغييرها إلى 512.
المعلمة الرئيسية الثامنة: thread_cache_size
عدد المواضيع المخزنة فيه والتي يمكن إعادة استخدامها. إذا كان هناك، فسيتم جلب مؤشر الترابط الجديد من ذاكرة التخزين المؤقت، وإذا كان هناك مساحة عند قطع الاتصال، فسيتم وضع مؤشر ترابط العميل في ذاكرة التخزين المؤقت. إذا كان هناك العديد من مؤشرات الترابط الجديدة، فيمكن استخدام هذه القيمة المتغيرة لتحسين الأداء. من خلال مقارنة المتغيرات في حالات Connections وThreads_created، يمكنك رؤية دور هذا المتغير. لقد ضبطته على 80.
المعلمة الرئيسية التاسعة: wait_timeout
عدد الثواني التي ينتظرها الخادم لاتخاذ إجراء بشأن الاتصال قبل إغلاقه. القيمة الافتراضية هي 28800، وقمت بتغييرها إلى 7200.
ملحوظة: يمكن تعديل المعلمة عن طريق تعديل الملف /etc/my.cnf وإعادة تشغيل MySQL. هذه مهمة حذرة نسبيًا، والنتائج المذكورة أعلاه ليست سوى بعض من آرائي. يمكنك تعديلها وفقًا لظروف الأجهزة الخاصة بالمضيف الخاص بك (خاصة حجم الذاكرة).