یوشا

دست نوشته ها و تجربیات شخصی

یوشا

دست نوشته ها و تجربیات شخصی

شهید دکتر مصطفی چمران: می گویند تقوا از تخصص لازمتر است، آنرا می پذیرم، اما می گویم آنکس که تخصص ندارد و کاری را می پذیرد بی تقواست!

طبقه بندی موضوعی

 

پایگاه داده 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، برای اکثر کاربردهای تجاری مناسب است. با این حال، برای کاربردهای خاص مانند گزارش‌ گیری سنگین یا ذخیره‌ سازی موقت، موتورهای دیگر ممکن است گزینه‌ های بهتری باشند.

  • ۹۲/۱۲/۱۸
  • یوشا آل ایوب

MySQL

table types

انواع جدول

مای اس کیو ال

نظرات  (۲)

ممنون
  • مهدی پیشگوی
  • دستتون درد نکنه

    ارسال نظر

    کاربران بیان میتوانند بدون نیاز به تأیید، نظرات خود را ارسال کنند.
    اگر قبلا در بیان ثبت نام کرده اید لطفا ابتدا وارد شوید، در غیر این صورت می توانید ثبت نام کنید.
    شما میتوانید از این تگهای html استفاده کنید:
    <b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">