پس از آشنایی با نحوه شاخصبندی جدولها در MySQL باید با انواع جدول در MySQL آشنا شویم. با ما در الفبایت همراه باشید.
جدولها در MySQL به ۷ دستهی MyISAM, InnoDB, Merge, Memory, Example, Archive, DBD تقسیم میشوند.
ویژگیهای جدول MyISAM:
۱- مقادیر طوری ذخیره میشوند که بایتهای با ارزش کمتر ابتدا قرار میگیرند سپس بقیه دادهها قرار خواهند گرفت.
۲- مقادیر کلید عددی طوری ذخیره میشوند که بایتهای با ارزش، ابتدا قرار میگیرند و شاخص به خوبی فشرده میشود.
۳- از فایلهای به طول ۶۳ بایت پشتیبانی میکند.
۴- برای هر جدول MyISAM حداکثر ۶۴ شاخص میتوان قرار ساخت.
۵- حداکثر طول هر کلید ۱۰۰۰ بیت است.
۶- حداکثر ستونها ۱۶ عدد است.
فرمت ذخیره جدول MyISAM:
۱- فرمت ایستا (STATIC FORMAT): این فرمت، فرمت پیش فرض این نوع جدول است. از این فرمت زمانی که جدول فاقد VARCHAR و VARVINARY و TEXT و BLOB باشد استفاده میشود. امنیت این نوع به علت ساده بودن بسیار بالا بوده و یافتن دادهها به سرعت انجام میگیرد.
۲- فرمت پویا (DYNAMIC FORMAT): اگر جدول حاوی VARCHAR و VARBINARY و text و VLOB باشد از فرمت پویا استفاده میکند. ساختار این جدولها کمی متفاوتتر و پیچیدهتر است پس سرعت کمتری دارد و فضای بیشتری را در HARD پر میکند.
۳- فرمت فشرده (COMPRESSED FORMAT): فقط قابل خواندن است و ابزار MyISAMPACK ایجاد میشود. با این ابزار جدول از جالت فشرده خارج شده و خوانده میشود. این نوع فرمت فضای کمتری اشغال میکند اما سرعت بازیابی دادهها به شدت کمتر میشود.
جدول نوع INNODB:
این جدول از ویژگیهای تراکنش (TRANSACTION) به خوبی پشتیبانی میکند (این ویژگی در مطالب بعدی توضیح داده خواهد شد.)
موتور InnoDB این نوع جدول حجم زیادی را از فضای داخلی سیستم میتواند پر کند (حتی بیش از ۲GB).
جدول نوع Merge:
جدول نوع Merge یک جدول مجازی است که ترکیبی از چند نوع جدول MyISAM میباشد. جدول نوع Merge از شاخصهای جدولهای سازنده آن استفاده میکند و فاقد هرگونه شاخص مخصوص به خود میباشد پس سرعت در این بسیار زیاد میباشد.
این نوع جدول در موارد زیر کاربرد دارد:
- مدیریت آسان تر چندین جدول
- افزایش سرعت انجام کار
- افزایش کارآیی جستجو
جدول نوع Memory:
محتویات این نوع جدول در حافظه قرار دارد. هر کدام از این نوع جدول به یک فایل در دیسک دسترسی دارند این فایل همنام با جدول و پسوند آن .frm می باشد.
جدول نوع Example:
موتور حافظه Example از نوع stub میباشد که کار خاصی انجام نمیدهد. کاربرد این جدول برای آن است که به عنوان نمونه در کد MySQL قرار گیرد و نشان دهد که چگونه میتوان موتورهای حافظه جدید نوشت. بنابران، برای توسعه دهندگان MySQL مناسب است و از شاخصها نیز پشتیبانی نمیکند.
جدول نوع Archive:
این نوع از جدولها برای ذخیرهسازی حجم زیاد دادهها بدون شاخص استفاده میشود. موتور این نوع، فایلی با پسوند .arz برای ذخیره دادهها و فایلی با پسوند .arn برای ذخیره متادادهها میسازد. این نوع جدول از دستورهای insert و select پشتیبانی میکند اما از delete یا replace یا update پشتیبانی نمیکند.
جدول نوع DBD:
نام دیگر آن BerkelyDB میباشد و برای پشتیبانی از تراکنشها به کار میرود.
تعیین نوع جدول در MySQL:
اکنون پس از آشنایی شدن با انواع جدولها باید نحوه تعیین نوع جدول ها را تعیین کنیم. برای این کار هنگام ایجاد جدول یا پس از آن از دستور engine یا type استفاده می کنیم. اگر بخواهیم از نوع Merge استفاده کنیم باید از کلمه union استفاده کنیم و پس از آن نام جدولها را به کار میبریم:
[crayon-662f9a50c7d79841667010/]
در دستورات بالا خط اول حالت کلی است اما خط دوم حالت جدول Merge میباشد. Table_name نام جدول و table_type نوع جدول میباشد.
نکته: تعیین نوع جدول را می توان زمان با دستور create table نیز انجام داد.
مثال: جدول post از پایگاه داده alefbyte ابتدا نوع InnoDB سپس نوع MyISAM تعیین کنید.
[crayon-662f9a50c7d94082643428/]
پس از واردکردن خط دوم نوع جدول post به InnoDB تغییر میکند. پس از واردکردن خط سوم به MyISAM بازمیگردد.
قفل کردن جدول و باز کردن قفلها:
با دستور lock tables می توان قفلهای نوع read و write را بر روی جدول ایجاد کرد و با دستور unlock tables میتوان قفل را باز کرد که در حالت عادی قفلها باز میباشند.
اگر قفل ایجاد شده از نوع read (خواندن) باشد شما و تمام کاربران MySQL تنها میتوانید عمل خواندن را بر جدول اعمال کنید و اطلاعات را از جدول بازیابی کنید.
اگر قفل ایجاد شده از نوع write (نوشتن) باشد شما فقط میتوانید عملیاتهای مربوط به نوشتن را اعمال کنید و بقیهی کاربران MySQL تنها میتوانند اطلاعات را از جدول بازیابی کنند.
برای اعمال قفلها باید از دستور lock tables به شکل زیر استفاده میشود:
[crayon-662f9a50c7d97064450993/]
در این دستور tname نام جدولی میباشد که قرار است قفل بر روی آن اعمال شود.
از طریق دستور as نیز میتوانیم نام مستعاری برای حدول خود تعیین کنیم و alias نام مستعار آن خواهد بود.
Lock_table نیز نوع قفل ما را تعیین میکند که از نوع read یا write میباشد.
برای باز کردن قفل نیز از دستور زیر استفاده میکنیم که تمامی قفلهای جدولها را باز میکند.
[crayon-662f9a50c7d99898653962/]
مثال: بر روی جدول post از پایگاه داده ی alefbyte قفل از نوع read و write اعمال کنید.
[crayon-662f9a50c7d9a631366871/]
به پایان این بخش از آموزش MySQL رسیدیم.
لطفا نظرها و دیدگاههای خود را برای افزایش کیفیت پستهای بعدی با ما در میان بگذارید.
با ما در الفبایت همراه باشید…