النتائج 1 إلى 8 من 8

الموضوع: ما هو الفرق السحري بين MYISAM و InnoDb

  1. #1

    ما هو الفرق السحري بين MYISAM و InnoDb



    السلام عليكم و رحمة الله و بركاته

    قرأت في موقع site point عن أخطاء يجب ان نتجنبها في استعمالنا لل sql و كان أحد هذه الأخطاء هو استعمالنا لي MYISAM و الأفضل استعمال InnoDB و في بعض الردود كان هناك اتفاق علي ان كل منهم له ميزة و عيب .

    أرجو ان يفيدونا الخبراء





    __________________
    Twitter : eMostafa91


  2. #2
    عضو فعال جدا
    تاريخ التسجيل
    Aug 2007
    المشاركات
    3,929

  3. #3
    عضو سوبر نشيط
    تاريخ التسجيل
    Jun 2003
    المشاركات
    789


    * MyISAM
    1, حين تقوم بإدخال مدخل جديد فأنه تقوم بإغلاق الجدول بالكامل، وهذا يسبب مشاكل في حالة وجود اعضاء كثر
    2. لا تدعم نظام النقل او مايسمى transaction،

    InnoDB
    1. تقوم بإغلاق ال row وليس الجدول بأكمله.
    2. تدعم عمل النقل او مايمسى transaction

    معني transaction
    لنفرض لديك برنامج يجب ادخال في اكثر من جدول، في حال عدم توفر النقل سيكون وحصل مشكله بالاتصال ستجد انه ادخل مدخل في جدول ولم يقم بالتالي، ولكن مع توفر النقل اذا حدث خلل في احد لنقل 3 جدول لم يتم ادخال البيانات.





    __________________
    متى استعبدتم الناس وقد ولدتهم أمهاتهم أحرار........
    -----------------------------------
    شبكة الشعر الادبيه

  4. #4


    * MyISAM
    1, حين تقوم بإدخال مدخل جديد فأنه تقوم بإغلاق الجدول بالكامل، وهذا يسبب مشاكل في حالة وجود اعضاء كثر
    2. لا تدعم نظام النقل او مايسمى transaction،

    InnoDB
    1. تقوم بإغلاق ال row وليس الجدول بأكمله.
    2. تدعم عمل النقل او مايمسى transaction

    معني transaction
    لنفرض لديك برنامج يجب ادخال في اكثر من جدول، في حال عدم توفر النقل سيكون وحصل مشكله بالاتصال ستجد انه ادخل مدخل في جدول ولم يقم بالتالي، ولكن مع توفر النقل اذا حدث خلل في احد لنقل 3 جدول لم يتم ادخال البيانات.
    شكرا لك

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

    و لكن InnoDb مع الجداول الكبيرة و الاستعلامات التي تتعامل مع أكثر من جدول .

    طيب ممكن مثال ؟

    يعني مثلاً الجدول الذي يوجد به بيانات الأعضاء، نستعمل معه MYISAM بينما جدول التعليقات نستخدم معه المحرك Innodb ؟

    هل كلامي صحيح ؟





    __________________
    Twitter : eMostafa91

  5. #5
    عضو فعال
    تاريخ التسجيل
    Jul 2003
    المشاركات
    1,576


    شغلني الموضوع لفترة .. واعتقد انني وصلت لبعض النقاط المهمة


    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 .

    تحياتي





    __________________
    SWF Thumbnail - tweet me

  6. #6


    بارك الله فيك، انت جبت الزبدة كلها ، اشكرك جدا !





    __________________
    Twitter : eMostafa91

  7. #7
    عضو نشيط
    تاريخ التسجيل
    Mar 2005
    المشاركات
    100


    شغلني الموضوع لفترة .. واعتقد انني وصلت لبعض النقاط المهمة


    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 .

    تحياتي


    حقا ابدعت
    اود ان اوضح ان المحرك
    InnoDB اصبح هو ال Default الان

    ومشكور علي الموضوع الجميل





    __________________
    رسلر 10 جيجا ->>57 ريال شهري , 562 ريال سنوي
    رسلر20 جيجا-->> 105 ريال شهري , 1050 ريال سنوي
    order@egyone.com
    chat@egyone.com

  8. #8
    عضو فعال
    تاريخ التسجيل
    Jul 2003
    المشاركات
    1,576


    العفو شكرا لكم

    وصحيح InnoDB هو الافتراضي حاليا





    __________________
    SWF Thumbnail - tweet me





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  
0
أضف موقعك هنا - وظائف - برامج كمبيوتر