انواع موتورهای Storage در MySQL
پایگاه داده MySQL بدلیل کارایی(performance) بسیار بالایی که داره قادره از انواع(type) مختلف Engine پشتیبانی کنه که هر کدوم برای کاربرد های خاصی طراحی شدن... در ادامه به بررسی کلی انواع این موتورها میپردازیم:
- نوع MyISAM
- نوع InnoDb
- نوع Memory
- نوع Archive
- نوع BerkeleyDb
- نوع Example
- نوع Merge
۱. موتور MyISAM
معرفی:
MyISAM یکی از رایج ترین موتورهای ذخیرهسازی در MySQL است که به صورت پیشفرض (Default) در بسیاری از نسخه های قدیمیتر MySQL استفاده میشد. این موتور بر اساس موتور ISAM قدیمی ساخته شده است.
ساختار فایل ها:
xxxxx.frm
: فایل قالب جدول (Format)xxxxx.MYI
: فایل ایندکس های جدول (MyIndex)xxxxx.MYD
: فایل داده های جدول (MyData)
ویژگی های کلیدی:
سرعت بالا در عملیات خواندن
اشغال فضای کمتر روی دیسک نسبت به InnoDB
پشتیبانی از Full-Text Search
پشتیبانی از فشرده سازی داده ها
محدودیت ها:
عدم پشتیبانی از تراکنش (Transaction)
عدم پشتیبانی از قفل گذاری در سطح رکورد (Row-level locking)
عدم پشتیبانی از کلیدهای خارجی (Foreign Keys)
آسیب پذیری بیشتر در صورت بروز خطا
کاربردهای مناسب:
سیستم های با عملیات خواندن سنگین
داده های Log و گزارش گیری
برنامه هایی که نیاز به Full-Text Search دارن
۲. موتور InnoDB
معرفی:
InnoDB موتور ذخیره سازی پیشفرض در نسخه های جدید MySQL هست که برای کار با داده های سنگین و تراکنشی طراحی شده.
ویژگی های کلیدی:
پشتیبانی کامل از Transaction با سطوح مختلف ایزوله سازی
قفل گذاری در سطح رکورد (Row-level locking)
پشتیبانی از کلید خارجی (Foreign Keys)
بهینه سازی برای کارایی بالا
Buffering پیشرفته برای داده ها و ایندکس ها
پشتیبانی از فشرده سازی داده ها
Replication و پشتیبان گیری بهتر
محدودیت ها:
اشغال فضای بیشتر روی HDD نسبت به MyISAM
پیچیدگی بیشتر در پیکربندی و تنظیمات
کاربردهای مناسب:
سیستم های تراکنشی (مانند سیستم های بانکی)
برنامه های کاربردی تحت وب
سیستم هایی که نیاز به یکپارچگی داده دارند
محیط هایی با عملیات نوشتن زیاد
۳. موتور MEMORY (HEAP)
معرفی:
موتور MEMORY تمام داده ها را در حافظه اصلی ذخیره می کند که باعث دسترسی فوق العاده سریع به داده ها میشود.
ویژگی های کلیدی:
سرعت بسیار بالا به دلیل ذخیرهسازی در RAM
پشتیبانی از ایندکس های HASH و BTREE
پشتیبانی از قفل گذاری در سطح جدول
محدودیت ها:
از دست دادن دادهها هنگام Reboot شدن سرور
عدم پشتیبانی از BLOB و TEXT
محدودیت در اندازه داده ها (به اندازه حافظه موجود)
پشتیبانی فقط از Fixed-length
کاربردهای مناسب:
جداول موقت
داده های کش
۴. موتور ARCHIVE
معرفی:
موتور ARCHIVE برای ذخیره سازی و بازیابی حجم زیادی از داده های Histroy که به ندرت به روز می شوند طراحی شده است.
ویژگی های کلیدی:
فشرده سازی بسیار بالا برای داده ها
پشتیبانی از BLOB
قفل گذاری در سطح رکورد
محدودیت ها:
پشتیبانی فقط از INSERT و SELECT
عدم پشتیبانی از UPDATE و DELETE
عدم پشتیبانی از ایندکس ها (به جز ایندکس اولیه خودکار)
کاربردهای مناسب:
آرشیو داده های History
داده های گزارش گیری
داده هایی که نیاز به ذخیره سازی بلندمدت دارند
۵. موتور BERKELEYDB (BDB)
معرفی:
موتور BerkeleyDB یک موتور Transaction ای است که در گذشته در MySQL استفاده میشد.
ویژگی های کلیدی:
پشتیبانی از تراکنش ها
قفل گذاری در سطح صفحه (Page-level locking)
محدودیت ها:
عدم پشتیبانی از کلید خارجی
کارایی کمتر نسبت به InnoDB
توقف توسعه (منسوخ شده)
۶. موتور EXAMPLE
معرفی:
این موتور یک موتور نمونه است که برای توسعه دهندگان هسته خود MySQL طراحی شده است.
ویژگی ها:
بدون قابلیت ذخیره سازی واقعی
فقط برای اهداف نمایشی و آموزشی
۷. موتور MERGE
معرفی:
موتور MERGE امکان ترکیب چندین جدول MyISAM با ساختار یکسان را فراهم می کند.
ویژگی های کلیدی:
امکان پرس و جوی همزمان چندین جدول
پشتیبانی از INSERT, UPDATE, DELETE
عدم محدودیت در اندازه (به صورت تئوری)
محدودیت ها:
کارایی کمتر نسبت به جداول مستقل
برخی محدودیت ها در عملیات نوشتن
کاربردهای مناسب:
پارتیشنبندی منطقی داده ها
ترکیب داده های تاریخی
خلاصه مطلب
در نسخه های جدید MySQL، موتور InnoDB به عنوان Engine پیش فرض انتخاب شده است که به دلیل پشتیبانی از ویژگی های پیشرفته مانند Transaction و FK، برای اکثر کاربردهای تجاری مناسب است. با این حال، برای کاربردهای خاص مانند گزارش گیری سنگین یا ذخیره سازی موقت، موتورهای دیگر ممکن است گزینه های بهتری باشند.