انواع جدول - Table types
پایگاه داده MySQL بدلیل کارایی(performance) بسیار بالایی که داره قادره از انواع(type) مختلف جدول پشتیبانی کنه که به شرح زیر هستن:
- نوع MyISAM
- نوع InnoDb
- نوع Memory
- نوع Archive
- نوع BerkeleyDb
- نوع Example
- نوع 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 هم داره.
- نوع BerkeleyDb
از Transaction بخوبی پشتیبانی میکنه. داده ها در دو فایل با پسوند frm(قالب) و db(داده ها) ذخیره میشن. Index ها فشرده نمی شوند. از قفل جداول پشتیبانی می کنه. سرعت کمتری نسبت به InnoDb و خیلی کمتر نسب به MyISAM داره. هر جدول باید یک Primary key داشته باشه(نداشته باشه بصورت Default خود MySQL براش درست میکنه). در مورد تعداد Index ها و ستونها و Key ها هم اطلاعات دقیقی ندارم. (تابه حال دقیق تستش نکردم جستجو کنید)
- نوع Example
کارایی خاصی نداره و فقط برای توسعه دهندگان هسته MySQL بکار میره...
- نوع Merge
کار اصلیش الحاق/پیوست جداول(مثل هم) با هم هستش. خیلی از Option های MyISAM رو نداره. محدودیت برای فضا نداره. دستورات اصلی delete select update رو داره. از Key ها هم پشتیبانی می کنه. کمی هم کند هستش.