• 4 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
انواع جدول - Table types
#1
Information 
پایگاه داده 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:
برای بایگانیه دیگه lol
از قفل پشتیبانی میکنه و دستورات اصلیش هم فقط 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 ها هم پشتیبانی می کنه. کمی هم کند هستش.
وبلاگ: Yousha.Blog.ir

صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
http://gulfnews.com/opinion/thinkers/ira...i-1.500997
  پاسخ
#2
یکی از عیب های MyISAM این هست که ریلیشن بین تیبل ها رو ساپورت نمی کنه یا همون کلید خارجی
  پاسخ
تشکر شده توسط : cyletech nasserghiasi PowerDesign
#3
ايراد ديگرش هم پرفورمنس پائين تر نسبت به InnoDB
  پاسخ
تشکر شده توسط : PowerDesign
#4
نقل قول:ايراد ديگرش هم پرفورمنس پائين تر نسبت به InnoDB
مثلا؟
حالا برای InnoDb هم میگم. این نوع بیشتر برای داده های سنگین خوب هستش، نه بیشتر.
وبلاگ: Yousha.Blog.ir

صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
http://gulfnews.com/opinion/thinkers/ira...i-1.500997
  پاسخ
تشکر شده توسط :
#5
(۱۳۸۸ مرداد ۲۳, ۰۸:۲۱ ب.ظ)ramram نوشته: ايراد ديگرش هم پرفورمنس پائين تر نسبت به InnoDB
http://www.mysqlperformanceblog.com/2008...vs-innodb/
  پاسخ
تشکر شده توسط :
#6
http://www.mysqlperformanceblog.com/2008...vs-innodb
درسته، ولی این وبسایت کمی تعصبی با InnoDb برخورد کرده.
و حاضرم شرط ببندم که از InnoDb برای همچین وبسایت سبکی(دره پیتی) استفاده کرده.
وبلاگ: Yousha.Blog.ir

صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
http://gulfnews.com/opinion/thinkers/ira...i-1.500997
  پاسخ
تشکر شده توسط : Null PowerDesign
#7
من این سایت رو خیلی قبول دارم. از نظر من تعصبی برخورد نکرده. فقط مقایسه کرده اون هم با دلیل و مدرک

البته یه بنچمارک خیلی خوب هم داخل این سایت هست که falcon رو هم به میون آورده
http://www.mysqlperformanceblog.com/2007...ks-part-1/
  پاسخ
تشکر شده توسط : Y.P.Y mehrang
#8
(۱۳۸۸ مرداد ۲۳, ۱۰:۴۸ ب.ظ)Y.P.Y نوشته:
نقل قول:ايراد ديگرش هم پرفورمنس پائين تر نسبت به InnoDB
مثلا؟
حالا برای InnoDb هم میگم. این نوع بیشتر برای داده های سنگین خوب هستش، نه بیشتر.
از اين به بعد در هيچ پستي كه Y.P.Y پاسخي در آن داده باشه چيزي نمي نويسم و متاسفم
  پاسخ
تشکر شده توسط :
#9
نقل قول:از اين به بعد در هيچ پستي كه Y.P.Y پاسخي در آن داده باشه چيزي نمي نويسم و متاسفم
از کسی دفاع نمی کنم و میگم منتقد این تفکر شمام.
اگراشتباهی در بیان ایشون یا هر شخص دیگه هست باید با استناد پاسخ داد و طرف مقابل هم با استناد دفاع کنه. حالا اگه یه طرف به نوعی درست از خودش دفاع نکنه و فرا فکنی کنه یا هر چیز دیگه ای این خوانندگان مطلب هستن که تعیین می کنن مطلب درست رو کی ارائه کرده.
علم تاج افتخار دنیا و یادگار پس از مرگ است
  پاسخ
تشکر شده توسط : Y.P.Y zoghal peyman.nt PowerDesign
#10
(۱۳۸۸ مرداد ۲۴, ۰۶:۲۸ ب.ظ)alimokhlesi نوشته:
نقل قول:از اين به بعد در هيچ پستي كه Y.P.Y پاسخي در آن داده باشه چيزي نمي نويسم و متاسفم
از کسی دفاع نمی کنم و میگم منتقد این تفکر شمام.
اگراشتباهی در بیان ایشون یا هر شخص دیگه هست باید با استناد پاسخ داد و طرف مقابل هم با استناد دفاع کنه. حالا اگه یه طرف به نوعی درست از خودش دفاع نکنه و فرا فکنی کنه یا هر چیز دیگه ای این خوانندگان مطلب هستن که تعیین می کنن مطلب درست رو کی ارائه کرده.

نه تا وقتي كه غرض ورزي رو احساس مي كنم خيلي سعي كردم اما متاسفانه بارها احساس كردم كه ايشون مشكل شخصي با من دارن و باور كن ديگه خسته تر از اونيم كه بخوام باكسي سر اين چيزاي بچگانه بحث كنم و اينطور بحث ها و سوال جواب ها فقط باعث منحرف شدن پست ها ميشه كه جدا باهاش مخالفم و دليل اين ادامه ندادن هم همينه من تا زماني كه مطمئن نباشم به سوالي با يقين پاسخ نمي دم و زماني هم كه لينك يا توضيحي داده ميشه خود توضيح رو هم ايشون زير سوال مي برن فكر مي كنم همه چيز به اندازه كافي شفاف باشه اون چيزيكه براي من بدونه پاسخ مونده دليل اين رفتاره و اينكه نهايتا ايشون دنبال چي هستن
اي كاش همينها هم گفته نميشد
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان