وانا بصمم جداول قاعدة البيانات اختار MyISAM ولا InnoDB ؟
ده سؤال كثير من البرمجين بيحتاروا فيه وهما بيعملوا جدول فى قواعد البيانات 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
كتب بواسطه : م.محمود الزيادى
تطبيق جوال البدر للذبائح والولائم
Views 1812
هصمم قاعدة البيانات اختار MyISAM ولا InnoDB
Views 1475