شغلني الموضوع لفترة .. واعتقد انني وصلت لبعض النقاط المهمة
MyISAM و InnoDB هي محركات لقواعد البيانات ، الاختلافات بينهم تكون في طريقة التعامل مع البيانات المخزنة، كيفية تخزينها، كيفية التعديل عليها، البحث بها، العمليات المتاحة عليها
1- MyISAM عموما هو لقواعد البيانات التي تحمل كميات من البيانات تعتبر معقولة بالنسبة لقاعدة بيانات - الموضوع يعتمد على نوعية البيانات ونوعية العمليات المنفذة عليها كمثال : جدول يحتوي على 10 حقول ما بين نص ورقم ، وبداخله 10,000 نتيجة .. يعتبر معقول بالنسبة لقاعدة بيانات .
و MyISAM تتميز بالسرعة، وقلة استخدام ال memory مقارنة بال InnoDB مع ملاحظة اننا نتحدث عن كمية بيانات ( بالحجم المعقول ) .
2- InnoDB تتميز بتعقيد العمليات المتاحة ودقتها ، تستخدم عامة لمواقع البنوك ، المواقع الكبيرة ، كميات البيانات الكبيرة ، الجداول التي تحتوي على نتائج عديدة وحقول متعددة، فهي اسرع في التعامل مع كميات البيانات الكبيرة على عكس كميات البيانات الصغيرة ، فهي ابطأ من MyISAM كما تستخدم حيز كبير من الميموري ( ولهذا يفضل استخدام هذا الحيز في مكانه الصحيح او استخدام في محله - كميات كبيرة من البيانات ).
مقارنة سريعة بين الخواص المتاحة :
3- MyISAM تدعم خاصية ال Full text Search بينما InnoDB لا تدعمها .
4- InnoDB تدعم ال Transactions وهي نوعية معروفة من العمليات المرتبطة بقواعد البيانات - تستخدم غالبا للعمليات الجادة مثل تحويل البنوك، عمليات البيع والشراء .. ومن اهم مميزات ال RollBack والتي تتيح استرجاع العمليات المنفذة على قاعدة البيانات كاملة .. كأنه باك اب جزئي .. او ctrl+z لمجموعة من العمليات - والتي لا تدعمها ال MyISAM
5- InnoDB تدعم ال Foreign Keys وتدعم ربط جدولين او اكثر من خلال مفاتيح او حقول ، ويكون الربط بينهم حقيقي او مشروط constraints وليس مجرد virtual كما هي الحالة في MyISAM .
6- MyISAM تعتمد على تقنية Table level locking بينما InnoDB تعتمد على Row level locking ولكلا استخداماتها ومميزاتها وعيوبها .. هذا الرابط مفيد للمهتمين :
http://stackoverflow.com/questions/3...r-large-tables
7- كذلك هناك بعض ال datatypes الموجودة في MyISAM وغير موجودة في InnoDB
اخيرا ، اتوقع انه من الواضح ان MyISAM مفيدة للمواقع التي تحمل بيانات قليلة ( لا تفهم قليلة غلط ! ) او التي على الاقل للمواقع التي لا تحتاج لاستخدام معين من استخدامات InnoDB .
ولا تنسى ان ال MyISAM في النهاية هو ال default table type in MySQL وبالمناسبة فهو تطوير لمحرك - تم الغاءه حاليا - ISAM .
تحياتي