انواع/موتور های جدول در MySQL

Y.P.Y

Well-Known Member
منبع: http://forum.iranphp.org

سلام،
پایگاه داده MySQL بدلیل کارایی(Performance) بسیار بالایی که دارد قادر است از انواع(Type) مختلف جدول پشتیبانی کند که به شرح ذیل می باشند:

1- نوع MyISAM
2- نوع InnoDb
3- نوع Memory
4- نوع Archive
5- نوع BerkeleyDb
6- نوع Example
7- نوع Merge

نوع MyISAM:
یکی از بهترین نوع جدول هستش که خود MySQL هم بصورت پیشفرض(Default) در نظر می گیرش(چه تعریفش کنید و چه نکنید). این نوع بر اساس نوع ISAM قدیم ساخته شده(که در نگارش 5 وجود نداره) و برای هر جدول هم 3 فایل ایجاد می کنه:
xxxxx.frm: حاوی قالب جدول. Form/at
xxxxx.myi: حاوی Index های جدول. MyIndex
xxxxx.myd: حاوی داده های جدول. MyData
از جمله ویژگی های مثبتش هم:
سرعت بسیار بالا.
Catch بسیار راحت.
اشغال فضای کمتر در Disk.
دارای Option های data directory و index directory در ساخت جداول.
به خوبی از Triger، View, Routine و Stored procedure پشتیبانی می کند.
می تواند 64 تا Index داشته باشد.
می تواند Key های 1000 بایتی داشته باشد.
هر سطر ار فضای خودش استفاده می کند و در صورت لزوم به چند قسمت تقسیم می شوند.
می تواند 16 ستون را در Index نگه داری کند.
داده ها می توانند با 3 قالب Static, Dynamic و Compressed ذخیره بشن.
برای قالب Dynamic فضای بیشتری درنظر می گیرند.
برای قالب Static فضای کمتری درنظر می گیرند.
از Index نوع BTree استفاده می کند.
پشتیبانی کامل از دستورات اصلی(select, delete, update, insert...) و فرعی(where, order...).
ستون های نوع VarChar می توانند طول Static یا Dynamic داشته باشند.
پشتیبانی از قفل گذاری جداول. Read/write.
از مقدار تهی(Null) در ستونهای Index پشتیبانی می کند.
تمام مقادیر Key از نوع عدد، طوری ذخیره میشن که Index ها به عالی ترین شکل فشرده می شوند.
قابلیت ترمیم و بازیابی بالایی دارد.
از فایل هایی با طول 63 بیت هم پشتیبانی می کند(با اجازه سیستم).
داده ها از نظر بیتی، از کوچیک به بزرگ ذخیره میشن. در نتیجه از سیستم جدا خواهند بود.
ستونهای نوع Text و BLOb به عنوان Index هم می توانند معرفی بشن.
و...

نوع InnoDb:
این نوع جدول در کار با داده های سنگین بسیار کارامد هستش. از Transaction بخوبی پشتیبانی میکنه. از قفل جداول و سطر ها هم پشتیبانی می کنه. داده ها و Index ها رو هم در Buffer خودش ذخیره می کنه. نسبت به نوع MyISAM کمتر Option داره. Performance بالایی هم داره؟!

نوع Memory:
همانطور که از نامش پیداست بیشتر با حافظه سروکار داره. جداول رو در فایلی با پسوند frm ذخیره می کنه. هر جدول میتونه 32 تا Index داشته باشه. Index ها می تونن محتوای Null هم باشن. این Index ها از نوع BTree یا Hash هستند. فرمت سطرها فقط از نوع Fixed هستش. از گزینه auto_increment هم پشتیبانی می کنه. از ستون های نوع BLOb و Text پشتیبانی نمی کنه.
هر Index میتونه 16 تا ستون داشته باشه. طول هر Key هم 500 بایت هستش.

نوع Archive:
برای بایگانی دیگه :D
از قفل پشتیبانی میکنه و دستورات اصلیش هم فقط select و insert هستش.
نوع BLOb هم داره :sleepy:.

نوع BerkeleyDb:
از Transaction بخوبی پشتیبانی میکنه. داده ها در دو فایل با پسوند frm(قالب) و db(داده ها) ذخیره میشن. Index ها فشرده نمی شوند. از قفل جداول پشتیبانی می کنه. سرعت کمتری نسبت به InnoDb و خیلی کمتر نسب به MyISAM داره. هر جدول باید یک Primary key داشته باشه(نداشته باشه بصورت Default خود MySQL براش درست میکنه). در مورد تعداد Index ها و ستونها و Key ها هم اطلاعات دقیقی ندارم(تابه حال دقیق تستش نکردم :D جستجو کنید).

نوع Example:
چیزی که عیانه چه حاجت به بیانه؟! :D
کارایی خاصی نداره و فقط برای توسعه دهندگان هسته MySQL بکار میره(این رو یک توسعه گر کاردرست خارجی بهم گفت :D).

نوع Merge:
کار اصلیش الحاق/پیوست جداول(مثل هم) با هم هستش. خیلی از Option های MyISAM رو نداره. محدودیت برای فضا نداره. دستورات اصلی delete select update رو داره. از Key ها هم پشتیبانی می کنه. کمی هم کند هستش.

موفق باشید.

منبع: http://forum.iranphp.org
 

جدیدترین ارسال ها

بالا