هصمم قاعدة البيانات اختار MyISAM  ولا InnoDB

وانا بصمم جداول قاعدة البيانات اختار MyISAM  ولا  InnoDB  ؟ 

mysql 1

ده سؤال كثير من البرمجين بيحتاروا فيه  وهما بيعملوا جدول فى قواعد البيانات  MySQL لاختيار محرك التخزين Storage Engine    وهيفرق معايا في ايه ؟ وهل لازم كل الجداول تبقى نفس النوع ولا ممكن تختلف ؟

للاجابه على السؤال ده لازم تعرف ايه الفرق بينهم ويفيدك فى ايه تختار MyISAM او تختار InnoDB  

 Storage Engine ده طرق موجوده فى ال MySQL لحفظ البيانات داخل جداول وكل طريقه ليها مميزات مختلفه عن الاخرى وتعتبر عيب احيانا على حسب البيانات الى هتسجلها وطريقه تسجليها طريقه التعامل معها من حيث الواجه البرمجيه . 

على سبيل المثال لو بتعمل برنامج محاسبى بيسجل عمليات حسابيه فى اكثر من جدول فى نفس الوقت ويعمل تحديث لاكثر من قيمه فى نفس الوقت يعنى مثل زياده رصيد الخزنه ورصيد العميل ورصيد المخزن بعد عمليه حفظ فاتورة  مثلا  يفضل استخدام الجداول من نوع InnoDB  لانه بيدعم العمليات  Transaction بمعنى ان كل الجداول والعمليات دى تتم مع بعض او تتلغى مع بعض يعنى لو اثناء التسجيل فيه 3 عمليات لازم يتعملوا مع بعض ولاكن لخطا غير متوقع اول عملتين اتنفذوا والثالث لم ينفذ بيتم الغاء اول عملتين لعدم تنفيذ الثالثه هذا هو الTransaction  ولاكن  فى حاله استخدام MyISAM هذه الميزه غير موجوده او ممكن نقول موجود ولاكن هتوقف النظام كله على ما تم بنفس الهدف لانه هتقفل كل الجداول الى بيتعمل عليها تحديث ولاكن  استخدام InnoDB  هتقفل بس الحقول الى عليها تحديث فقط فى الجداول الى بيتم تحديثها .

فاستخدام InnoDB  يعطى مميزات كبيره اذا كنت هتعتمد على العلاقات بشكل كبير وتنفيذ مجموعه من العمليات فى عدد من الجداول فى نفس الوقت  .

ولاكن مثلا لو بتعمل موقع معتمد على النصوص والمحتوى الكبير والبيانات الضخمه يفضل تستخدم MyISAM  لان حجم الجدول الاقصى  الى 256TB ولاكن حجم الجدول الاقصى فى InnoDB 64TB فقط .

تمتاز MyISAM بالتصميم الابسط والاسهل  بدون علاقات لذك تكون سرعه الاداء اعلى من محرك InnoDB 

ولاكن تجد ان  InnoDB  يدعم ميزه التخزين المؤقت Data Cashes ولاكن غير متوفره فى محرك MyISAM  وهذه ايضا تعطى ميزه فى الاداء فى بعض الاستعلامات من قاعدة البيانات 

هل لازم كل الجداول تبقى نفس النوع ولا ممكن تختلف ؟ 

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

الامر ليس قاعدة  محدده ولاكن لكل اختيار منهم مميزات وعيوب ممكن معرفه المزيد عن المحركات الاخرى والفروق بين كل محرك والممزيات من خلال موقع MySQL 

كتب بواسطه : م.محمود الزيادى

لمزيد من المقالات يمكن متابعة مدونة البدر