یک اشاره کوتاه در این ویدیو آموزشی دربارهی تفاوتهای بین InnoDB و MyISAM شد که در اینجا با هم تفاوتهای بین این دو موتور ذخیره سازی را بیشتر درک میکنیم.
- اولین چیزی که باید بدانیم این است که موتور ذخیره سازی MyISAM به طور پیشفرض توسط MySQL انتخاب شده است.
- MyISAM بر خلاف InnoDB نمیتواند Transactionها را پشتیبانی بکند.
- هیچ امکانی در MyISAM به اسم row-level locking ( یک تکنیک در سیستم مدیریت پایگاه داده است که که دسترسی کاربران را از یک row یا ردیف میبندد تا در هنگام بروزرسانی هیچ کاربری به آن دسترسی نداشته باشد) و همچنین یک رابطه درست بین جداول وجود ندارد اما در InnoDB امکان پذیر است.
- همانطور که InnoDB از row-level locking پشتیبانی میکند، سرعت insert و update کردن بالاتر از MyISAM است.
- InnoDB برعکس MyISAM از ایندکس FULLTEXT ساپورت نمیکند.
- کارایی سرعت در MyISAM بیشتر از InnoDB است.
- در پایگاه دادههای بزرگ InnoDB در مقایسه با MyISAM گزینه مناسبتری است و برای پایگاه دادههای کوچک MYISAM گزینه مناسبی است.
- InnoDB از ACID که مخفف (Atomicity , Consistency, Isolation and Durability) است که اگر بخواهیم آنها را جداگانه ترجمه کنیم، ظرفیت اتمی (Atomicity)، پایداری (Consistency)، جداسازی (Isolation)، دوام (Durability) است که برای Transactionها میباشد را پشتیبانی میکند که در MyISAM این ممکن نیست.
- در InnoDB فیلد AUTO_INCREAMNT بخشی از Index است.
- هنگامی که در InnoDB یک جدول حذف میشود دیگر نمیتوان آن را دوباره برپا کرد.
- InnoDB دادهها را به عنوان یک سطحی از جدول ذخیره سازی نمیکند، برای مثال اگر ما (aggregate function) یا به اصطلاح تابع (*)count را اجرا کنیم نتیجه آن را ذخیره نمیکند و اگر دوباره آن را اجرا کنیم کل فیلدهای مورد نظر را بررسی میکند در حالی که در MyISAM این دادهها ذخیره میشوند و به راحتی قابل دسترس میباشند.
امیدوارم براتون مفید بوده باشه.