it-swarm.asia

ما الفرق بين MyISAM و InnoDB؟

أتفهم أن هذا السؤال قد تم طرحه من قبل ، ولكن في معظم الأحيان يتم طرحه فيما يتعلق بقاعدة بيانات أو جدول معين. لا يمكنني العثور على إجابة على هذا الموقع تصف محركين واختلافاتهما دون احترام لقاعدة البيانات الخاصة بشخص ما.

أريد أن أكون قادرًا على اتخاذ قرارات أكثر استنارة في المستقبل فيما يتعلق بتصميم جدول أو قاعدة بيانات ، لذلك أبحث عن إجابة شاملة حول الاختلافات بين محركي التخزين.

ما الفرق بين MyISAM و InnoDB ، وما الذي يجب أن أبحث عنه عند محاولة الاختيار بين واحد أو آخر؟

247
Scott

الاختلافات الرئيسية بين InnoDB و MyISAM ("فيما يتعلق بتصميم جدول أو قاعدة بيانات" سألت عنها) هي دعم "التكامل المرجعي" و "المعاملات".

إذا كنت بحاجة إلى قاعدة البيانات لفرض قيود المفتاح الخارجي ، أو كنت في حاجة إلى دعم قاعدة البيانات للمعاملات (أي التغييرات التي تم إجراؤها بواسطة عمليتين أو أكثر من عمليات DML يتم التعامل معها كوحدة عمل واحدة ، مع تطبيق كل التغييرات أو إعادة كل التغييرات) بعد ذلك ستختار محرك InnoDB ، نظرًا لأن هذه الميزات غائبة عن محرك MyISAM.

تلك هي الاختلافات الأكبر اثنين. فرق كبير آخر هو التزامن. مع MyISAM ، سيحصل بيان DML على قفل خاص على الطاولة ، وبينما يتم تعليق هذا القفل ، لا يمكن لأي جلسة أخرى إجراء عملية SELECT أو DML على الطاولة.

لهذين المحركين المحددين اللذين سألتهما (InnoDB و MyISAM) أهداف تصميم مختلفة. MySQL لديها أيضا محركات التخزين الأخرى ، مع أهداف التصميم الخاصة بهم.

لذلك ، عند الاختيار بين InnoDB و MyISAM ، فإن الخطوة الأولى هي تحديد ما إذا كنت تحتاج إلى الميزات التي يوفرها InnoDB. إذا لم يكن كذلك ، فإن MyISAM متروك للنظر فيه.

مناقشة أكثر تفصيلاً حول الاختلافات غير عملية إلى حد ما (في هذا المنتدى) في غياب مناقشة أكثر تفصيلاً لمساحة المشكلة ... كيف سيستخدم التطبيق قاعدة البيانات ، وعدد الجداول ، وحجم الجداول ، وحمل المعاملة ، ومجلدات تحديد ، إدراج ، تحديثات ، متطلبات التزامن ، ميزات النسخ المتماثل ، إلخ.


ينبغي أن يركز التصميم المنطقي لقاعدة البيانات على تحليل البيانات ومتطلبات المستخدم ؛ سيأتي اختيار استخدام قاعدة بيانات علائقية لاحقًا ، وحتى بعد ذلك سيأتي اختيار MySQL كنظام لإدارة قواعد البيانات العلائقية ، ثم اختيار محرك تخزين لكل جدول.

404
spencer7593

MYISAM:

  1. MYISAM يدعم تأمين مستوى الجدول
  2. MyISAM مصممة للحاجة إلى السرعة
  3. لا يدعم MyISAM المفاتيح الخارجية وبالتالي نسمي MySQL مع MyISAM هو DBMS
  4. تقوم MyISAM بتخزين الجداول والبيانات والفهارس في مساحة القرص باستخدام ثلاثة ملفات مختلفة منفصلة. (tablename.FRM ، tablename.MYD ، tablename.MYI)
  5. MYISAM لا يدعم المعاملة. لا يمكنك الالتزام والتراجع مع MYISAM. بمجرد إصدار أمر ما يتم تنفيذه.
  6. MYISAM يدعم البحث عن النص الكامل
  7. يمكنك استخدام MyISAM ، إذا كان الجدول ثابتًا مع الكثير من التحديد وأقل التحديث والحذف.

ك InnoDB:

  1. يدعم InnoDB تأمين مستوى الصف
  2. تم تصميم InnoDB لتحقيق أقصى أداء عند معالجة حجم كبير من البيانات
  3. يدعم InnoDB المفاتيح الخارجية ومن هنا نسمي MySQL مع InnoDB هو RDBMS
  4. يخزن InnoDB الجداول والفهارس في مساحة جدول
  5. InnoDB يدعم المعاملة. يمكنك الالتزام والتراجع مع InnoDB
337
medina