it-swarm.asia

كيف يمكنك ضبط MySQL لعبء عمل InnoDB الثقيل؟

بافتراض أن الإنتاج OLTP نظام مع جداول InnoDB في الغالب

  • ما هي الأعراض الشائعة لنظام خاطئ/تم تكوينه بشكل خاطئ؟
  • ما هي معلمات التكوين التي تغيّرها عادةً من الإعدادات الافتراضية؟
  • كيف تكتشف الاختناقات المحتملة قبل حدوث مشكلة؟
  • كيف تتعرف على المشاكل النشطة وتحرِّكها؟

أي حكايات تفصل متغيرات status محددة وتشخيصات ستكون موضع تقدير.

40
Riedsio

هنا مقال جيد عن ضبط InnoDB من Sun's Jenny Chen - تدون الكثير عن MySQL ، وبعضها خاص بـ Solaris (على سبيل المثال باستخدام DTrace ) ولكن المدونة بأكملها مليئة بالحكايات المثيرة للاهتمام.

16
Gaius

من المثير للاهتمام ، في MySQL 5.5 ، يمكنك الآن الحصول على تجمعات متعددة من المخزن المؤقت الداخلي.

المعلمات التي تهمك هي

في حوالي شهر ، من المقرر أن أقوم بتنفيذ 112 تجمعًا داخليًا مؤقتًا للعميل. سأعلمك كيف سارت الأمور.

تحديث 2011-02-27 21:57 EDT

اكتشفت أن الحد الأقصى لقيمة innodb_buffer_pool_instance هو 64 ، وقررت تهيئة 144 غيغابايت ، لذا قمت بتعيين innodb_buffer_pool_instance على 18 و innodb_buffer_pool_size على 8. أحمل حاليًا الخادم بسعة 450 غيغابايت

تحديث 2011-04-28 13:44 بتوقيت شرق الولايات المتحدة

لقد جربت عدة حمامات عازلة InnoDB. كان هناك الكثير من القفل والخلاف. لقد غيرت إلى Buffer Pool واحد بسعة 162 جيجا بايت + إعداد read_io_threads و write_io_threads إلى 64 (القيمة القصوى). هذا يعمل بشكل أفضل.

تحديث 2012-07-03 17:27 بتوقيت شرق الولايات المتحدة

تعلمت شيئًا مدهشًا حول MySQL. إذا قمت بتخصيص InnoDB Buffer Pool واحد متجانسة أكبر من ذلك إجمالي التثبيت مقسومًا على عدد وحدات المعالجة المركزية المادية ، سوف يحرض نظام التشغيل على تبديل الذاكرة بفواصل منتظمة بسبب تجمع InnoDB Buffer Pool الكامل. يمكن استخدام خيار MySQL 5.5 المعروف باسم innodb_buffer_pool_instance لتقسيم تجمع المخزن المؤقت. بالأمس ، قمت بتنفيذ هذا بشكل صحيح للعميل الذي ذكرته في إجابتي العام الماضي. لا يزال لدي 162 غيغابايت لمخزن العميل المؤقت. لقد قمت بتعيين خيار innodb_buffer_pool_instance للخادم إلى 2 لأن كل خادم DB هو سداسي مزدوج. كنت أفكر في تعيينه إلى 12 ولكن بعد ذلك أظهر لي أحد الزملاء مدونة من جيريمي كول على MySQL و Swappiness . بعد قراءتها ، وضعتها موضع التنفيذ على الفور لموكلي. قمت بتشغيل هذا الأمر

numactl --hardware

رأيت تعيين 192 جيجا بايت من الخادم RAM 96 غيغابايت لكل نواة مادية. لذلك ، قمت بتعيين innodb_buffer_pool_instance على 2. الأمور تبدو جيدة الآن. سأقوم بتحديث إجابتي لمعرفة كيف يؤثر على مبادلة الذاكرة لل montns 2 المقبل.

19
RolandoMySQLDBA

قد ترغب في استكشاف الموارد التالية:

7
Brian Ballsun-Stanton

أولاً قم بزيادة حجم InnoDB Buffer Pool الافتراضي في my.cnf (أعتقد أنه افتراضي إلى 8 ميغابايت)

ربما يجب عليك تعيين هذا إلى 75٪ من حجم RAM (بشكل عام)

4
Matt Healy