it-swarm.asia

نوى متعددة وأداء MySQL

أهمية RAM هي حقيقة ثابتة ولكن تتوفر مواد أقل بكثير حول أهمية النوى والتعدد المتعدد عندما يتعلق الأمر باستخدام وحدة المعالجة المركزية بواسطة MySQL. أنا أتحدث عن اختلاف تشغيل MySQL على 4 درجات مقابل 6 درجات مقابل 8 درجات وهكذا.

هل تستخدم محركات التخزين المختلفة وحدة المعالجة المركزية بشكل مختلف؟

38
Rick James

عندما يتعلق الأمر بـ MySQL ، لا توجد مقارنة بين محركات التخزين إلا أنها تقع في فئتين أساسيتين:

يتميز MySQL باستخدام العديد من محركات التخزين

بالنسبة لمحركات التخزين المدرجة ، فإن المحركات الوحيدة التي تتوافق مع ACID هي InnoDB و NDB. لماذا يذكر هذا الاستيراد؟ سببان:

  • لا تستفيد محركات التخزين الأخرى ببساطة من وجود المزيد من النوى ، بخلاف الإدخال/الإخراج الأساسي للقرص ، واستخدام وحدة المعالجة المركزية ، والإنتاجية الإجمالية.
  • لم يتم تصميم الكود الخاص بكل محرك تخزين غير متعلق بالمعاملات ، والذي يملي بشكل أساسي 14 عملية داخلية بغض النظر عن محرك التخزين ، للاستفادة من الوصول إلى نوى متعددة.

إن InnoDB ضمن MySQL 5.5 و InnoDB Plugin) و XtraDB الخاص بخادم Percona لديهم خيارات يمكنك تعيينها للوصول إلى مراكز متعددة (كان خادم Percona يقوم بذلك لفترة أطول). في الواقع ، يقوم بيركونا بضخ حوالي 30.000 سطر من الكود خصيصًا لتحسين أداء InnoDB مع كل إصدار GA جديد من كود مصدر MySQL. يمكننا أن نكون على يقين من أن أوراكل قد ضمنت التحسينات الخاصة بها من مركز البحث الخاص بها لتشغيلها داخل InnoDB لتشغيل متعدد النوى (منذ MySQL 5.1.38).

مع الحاجة إلى تنفيذ [~ # ~] mvcc [~ # ~] على البيانات بالاقتران مع قفل الصف/الصفحة ، يمكن الآن أداء أداء المعاملات وقياسه وتكوينه.

إذا كان هناك شيء واحد تعلمته عن استخدام نوى متعددة ، فهو أنه يجب عليك ضبط InnoDB بشكل فعال وليس الاعتماد فقط على InnoDB خارج الصندوق .

تحديث 2011-09-20 08:03 EDT

فيما يتعلق باستفادة InnoDB من جميع النوى ، نحتاج إلى الحفاظ على الأشياء في حالة استقامة. يجب أن تميل النوى أيضًا إلى مسائل أخرى (نظام التشغيل ، القرص ، الذاكرة ، التطبيقات ، المراقبة ، إلخ) في خادم قاعدة البيانات. بالنسبة لأولئك الذين لديهم ميزانيات متواضعة ، يميل الكثيرون إلى أن يكون خادم قاعدة البيانات يوفر أيضًا NFS ، والمراقبة من Munin ، ودعم التطبيق لـ JBoss ، و PHP ، والقائمة تطول. إذا كنت تريد أن يستخدم MySQL ، وبشكل أكثر تحديدًا InnoDB ، المزيد من النوى ، يجب أن يكون خادم قاعدة البيانات مخصصًا حصريًا لـ MySQL ويجب أن يميل نظام التشغيل/القرص/الذاكرة إلى MySQL فقط . بالنظر إلى هذا المنظور ، سيشرك InnoDB المزيد من النوى دون شك.

أما بالنسبة إلى InnoDB Plugin ، فقد تم ذكره ببساطة لإظهار مبادرات سابقة للحصول على InnoDB أفضل من جانب MySQL (eh ، Oracle. عذرًا ، لا يزال لا يزال يتدحرج بعد). أصبحت المتغيرات الجديدة لاستدعاء المزيد من النشاط الأساسي واضحة من MySQL 5.1.38.

على سبيل المثال ، innodb_read_io_threads و innodb_write_io_threads (كلاهما منذ MySQL 5.1.38) يخصصان عددًا محددًا من سلاسل الرسائل للقراءة والكتابة. الإعداد الافتراضي هو 4 والحد الأقصى هو 64. وتوضح الإعدادات الافتراضية والحد الأقصى اختلافًا كبيرًا (4-64) أن InnoDB متعدد مؤشرات الترابط ومكثف الأساسية أثناء تكوينه !!!

قاد بيركونا تلبية احتياجات مجتمع MySQL للوصول إلى المزيد من النوى باستخدام InnoDB. ونتيجة لذلك ، بدأت MySQL تحذو حذوها. يجب أن أعترف بأن Oracle (yuck) أدخلت التحسينات اللازمة لمزيد من النشاط الأساسي.

30
RolandoMySQLDBA

أجد الحديث عن محركات التخزين using النوى قد تكون مضللة للمبتدئين. شريطة أن يكون البرنامج متعدد الخيوط بما فيه الكفاية ، سيقوم نظام التشغيل بجدولة البرنامج عبر أكبر عدد ممكن من النوى.

المشكلة المحددة التي تحد من تحجيم وحدة المعالجة المركزية هي عندما يكون رمز القفل الداخلي ( mutexes ) لديه تنافس ويمنع تشغيل الخيوط في نفس الوقت. ستتطلب جميع محركات التخزين كائنات مختلفة ، ولكن بالتأكيد هناك بعض المحركات الساخنة في MyISAM.

إذا تجاهلنا التنافس على كائن المزامنة لثانية ونعود إلى سؤالك الرئيسي: ما مدى أهمية وجود العديد من النوى؟ -

أحب وجود الكثير من النوى لأحمال العمل التي تخدم الطلبات التي تواجه المستخدم. يمكن أن يقلل وجود الكثير من التباين بين أوقات الاستعلام. فكر في ذلك على أنه اصطفاف في السوبر ماركت مع 12 ممرًا مفتوحًا مقابل 2 فقط.

التحديث : لقد كتبت مشاركة مدونة حول أهمية قابلية التوسع الرأسي (متعدد النوى).

9
Morgan Tocker