MyISAM أو InnoDB ؟


التعليقات

19

شخصياً أجد InnoDB أفضل وهو يختلف ببعض الأمور عن MyISAM أهمها:

  • InnoDB يعتبر ACID compliance ويدهم Transactions وهذا أمر ضروري للمعاملات المالية. [1]

  • InnoDB أفضل اذا كنت تحتاج لعدد كبير من INSERT بشكل مستمر لأنه يعتمد أسلوب row-level locking بينما MyISAM يقفل الجدول كاملاً table-level locking.

  • MyISAM أسرع من InnoDB عند الاستعلام SELECT ويوفر Full Text Search بسيط مقابل التضحية بالأمور السابقة.

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

[1]

17

innodb يسبق myisam دوماً عند استرجاع البيانات select ، لكن الأمر لا يقف فقط عند السرعة .

أستخدم myisam عندما يكون الجدول ضخم جداً (لست بحاجة إلى transactions) ، الميزة الأساسية في myisam أنه بإمكانك التعامل مع قاعدة البيانات كمجلد وملفات حيث بإمكانك نقل قاعدة بيانات 10GB بزمن قصير

بينما بحاجة لعدة ساعات في حال كانت innodb لأنك ستضطر إلى تصدير البيانات و استيرادها واستيراد بيانات ضخمة عن طريق ملف sql عملية صعبة جداً وبحاجة إلى تعديلات كثيرة على إعدادات mysql وقد تفشل كثيراً أو يصاب المخدم بالجمود.

innodb يتميز ب transactional وهذه الميزة أساسية عند العمل خاصة بالأمور المالية ، حيث myisam قد يتسبب بأخطاء وبيانات غير متوقعة في حال حدث خطأ اثناء تنفيذ سلسلة استعلامات ولم يتم معالجة الخطأ برمجياً (حذف البيانات المضافة ، لكن ماذا عن update ؟ )

أحياناً هناك جداول أريدها أن تكون خارج سياق أي transaction ، مثل جدول يحتوي على حالة تقدم progress في عملية معينة يستخدم فيها transaction ، في هذه الحالة يجب أن يكون myisam كي لا ينطبق عليه transaction و بالتالي لا يمكن قراءة البيانات منه حتى يتم تثبيت العمليات .

بالمناسبة في MariaDB وهي أحد النسخ المطورة من Mysql بامكانك إنشاء innodb مع ميزة transaction أو بدونها ... بالإضافة إلى إعدادات أخرى و تحسينات على الأداء.

إذا كنت تبحث عن الأداء عليك بـ MyISAM ولكنك ستفقد بعض الأمور مثل الintegrity constraints

ملاحظة بسيطة يمكنك ضبط اعدادات innodb من خلال ملف my.cnf ليكون لكل جدول ملف وليس ملف واحد للقاعدة كما هو الحال بالوضع الطبيعي لجداول innodb

بحيث يتم انشاء ملف خاص بكل جدول كما هي الحالة في MyISAM


تطوير الويب

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

91 ألف متابع