it-swarm.asia

Drupal قاعدة بيانات innodb أو MyISAM؟

لدي Drupal ، وأنا أعاني من مشكلات في الأداء. لقد وجدت كيف أقوم بتحويل قاعدة بيانات من MyISAM إلى InnoDB؟ تشير إلى أن الأداء قد يتحسن عن طريق التبديل.

كيف يمكنني معرفة ما إذا كانت قاعدة بيانات MySQL الخاصة بي هي InnoDB أو MyISAM؟

10
chrisjlee

يمكنك تشغيل استعلام مخصص:

SELECT TABLE_NAME, ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'database_name'

لسرد جميع الجداول في قاعدة البيانات الخاصة بك والمحرك المستخدم لكل منها.

بدلاً من ذلك ، يمكنك تسجيل الدخول إلى قاعدة البيانات الخاصة بك باستخدام phpMyAdmin وتحديد قاعدة البيانات الخاصة بك ... سترى المحرك في العمود Type في قائمة الجداول.

أنا شخصياً أوصي Navicat لـ MySQL ، إنها واجهة مستخدم MySQL GUI لطيفة للغاية وتجعل اكتشاف مثل هذه الأشياء أمرًا سهلاً للغاية.

المصدر: http://www.electrictoolbox.com/mysql-table-storage-engine/

8
Clive

كانت أفضل تجربة لي أن أتخذ قرارًا على أساس كل جدول. يعد InnoDB أمرًا رائعًا ، لأنه يمكنه تجنب قفل الجدول (لا يمكن لأي عملية أخرى القراءة من الجدول أثناء كتابة عملية واحدة) ، ولكنه يؤدي بشكل رهيب باستخدام COUNT () الذي يُستخدم غالبًا لاستعلامات النداء.

(تحرير: يرجى الاطلاع على تعليق Clives أدناه)

هناك أيضًا آثار على إعداد MySQL ، اعتمادًا على قاعدة البيانات التي تستخدمها. إذا كان لديك حق الوصول إلى الخادم ، فيجب أن يكون mysqltuner خطوتك الأولى ، للتحقق من التكوين:

https://github.com/rackerhacker/MySQLTuner-Perl#readme

6
Martin

مجرد محاولة الأشياء للحصول على موقع ويب أسرع مثل تغيير السيارات بشكل أعمى ونأمل أن تحصل على أسرع في المرة القادمة.

جرب أولاً الفواكه المنخفضة المعلقة ، إذا لم تساعد ، حاول العثور على عنق الزجاجة الحقيقي.

  1. هل قمت بتشغيل الآليات المضمنة: التخزين المؤقت للصفحة (فعال فقط للمستخدمين المجهولين) ، واتفاق CSS و JS؟
  2. إذا كان مضيفك يوفر ذاكرة تخزين مؤقت لرمز التشغيل مثل APC ، فقم بتشغيله.
  3. قم بإعداد Drupal localy ، بما في ذلك قاعدة البيانات الكاملة.
  4. تأكد من تشغيل XDebug.
  5. ابدأ في عمل توصيف الأداء الحقيقي. بهذه الطريقة يمكنك تحديد أي جزء من موقعك على الويب يستهلك الكثير من الوقت. كلما كان موقع الويب الخاص بك أبطأ ، كان من الأسهل العثور على رمز/مكون مذنب.

غالبًا ما يكون مجرد استعلام بطيء في قاعدة البيانات والذي يحتاج إلى فهرس أو وحدة نمطية تقوم بالأشياء بطريقة بطيئة.

اكتشفت أيضًا اختلافات كبيرة بين المضيفين. إذا قمت بتثبيت جديد drupal خارج منطقة الجزاء ، فهل الأداء جيد؟ إذا لم يكن كذلك ، فقد حان الوقت للبحث عن مضيف آخر.

6
BetaRide

فقط تنبيه. إذا كان لديك Drupal 6 ، يمكنك تثبيت DBTuner ؛ يمكنها بسهولة نقل جداولك من MyISAM إلى InnoDB. نعم ، هناك وحدة لذلك!

5
mikeytown2

FWIW عقدة 20K تقريبًا Drupal 6.x يواجه بعض مشكلات في الأداء وقد اخترت نقل جميع الجداول إلى InnoDB. كان الأمر سهلاً والطريقة التي تعاملت بها هي استخدام mysqldump ل تفريغ كل المحتوى إلى ملف sql ، استخدم محررًا (sed) لاستبدال جميع تكرارات MyISAM إلى InnoDB ثم أعد تحميل قاعدة البيانات من هذا الملف. أحد الجوانب السفلية هو أنه لا يمكنك استعادة مساحة من قاعدة بيانات InnoDB (IIRC) ولكن طالما تحتفظ بجداولك المكررة في قاعدة بيانات منفصلة ، فلن تواجه أي مشاكل. أوه ، لقد رأينا زيادة كبيرة في الأداء. ولأننا لدينا أربعة Drupal المثيلات العدد الهائل من ملفات الجدول تم حذفه من نظام الملفات (نعم ، إنه موجود داخل ملف InnoDB نفسه). هذا يساوي $ .02.

5
bobmct