MYSql چیست؟
یکی از پیش نیازهای سرویس دهی روی سرور های لینوکسی، داشتن دیتابیس میباشد. دیتابیس پیش فرض روی اکثر سرورهای هاستینگ لینوکس Mysql میباشد که یکی از محبوبترین نرم افزار های دیتابیس سرور است. این دیتابیس سرور دربین تمامی کاربران محبوبیت زیادی دارد و پیش فرض روی سرور های هاست سی پنل ، دایرکت ادمین و پلسک لینوکسی نصب میباشد. همچنین دیتابیس Mysql بصورت پیش فرض رایگان و اوپن سورس ارائه شده است. البته یک نسخه تجاری از از این دیتابیس سرور با نام Enterprise نیز وجود دارد که قابلیت های بسیار فراوانی را داراست و به ندرت میتوان گفت یکی از بهترین دیتابیس سرور های دنیاست که توسط شرکت Oracel توسعه داده میشود.
نسخه رایگان این دیتابیس سرور تقریبا تمامی نیازهای اولیه سایتهای کوچک و متوسط را با سرعت خوب بر آورده میکند، ولی برای سایتهای بزرگ و سازمان های تجاری بزرگ مسلما نسخه رایگان آن کار ساز نخواهد بود و بایستی نسخه Enterprise استفاده گردد.
Mysql دارای مزایایی میباشد که باعث محبوبیت بسیار زیاد آن شده است. از مزایای آن میتوان به موراد زیر اشاره کرد:
دارا بودن رایگان و اوپن سورس بدون نیاز به هزینه لایسنس.
پشتیبانی از اکثر سیستم عامل های موجود.
کاربرد راحت و سریع بودن Mysql حتی در کار با دیتابیس های حجیم.
استفاده راحت و سریع در تمامی زبان های برنامه نویسی .
Mysql همانند سایر دیتابیس سرور ها برای پردازش دستورات از موتورهای Engine پشتیبانی میکند. Engine های دیتابیس Mysql نقطه عطف این دیتابیس سرور میباشد که با توجه به نیاز خود میتواند بر اساس معایب و مزایایی که موتورها دارند یکی از آنها را انتخاب و استفاده کنید.
موتورهای Engine دیتابیس سرور Mysql عبارتند از:
MyISAM
InnoDB
MEREGE
Memory Heap
ARCHIVE
CSV
FEDERATED
همه این انجین ها دارای مزایا و معایبی میباشند که مطئنا با توجه به کارایی و عملکردی که شما از سیستم دارید، میتوانید بهترین موتور را انتخاب و در سیستم خود بکار ببرید. در ادامه به معرفی معایب و مزایای برخی از این موتورها میپردازیم.
MyISAM:
در صورتی که بخواهیم موتور MyISAM را بررسی کنیم و مزایای آن را اشاره کنیم، بایستی به اولین و بهترین ویژگی این انجین یعنی استفاده بهینه از منابع اشاره کنیم. همانطوری که میدانید منابع و میزان استفاده از آنها در سرور ها دارای اهمیت بسیار فراوانی میباشد و مدیران سرورها همیشه به فکر بهینه سازی مصرف منابع سرور هستند. در صورتی که مصرف منابع برای شما بسیار مهم باشد و منابع سرور شما محدود، پیشنهاد میگردد حتما مزیت استفاده بهینه از منابع این موتور را در اولیت قرار دهید.
البته این مصرف کم منابع تنها مزیت این موتور نیست و بهینه بودن این موتور همیشه مورد بحث هست. در جداول بزرگ با ایندکس گذاری و کلید های اصلی MyISAM میتواند بهترین و بهینه ترین نتیجه را در درخواست های Query یک SQL برای شما ایجاد کند.
همچنین نکته بسیار مهم MyISAM که از مزیت های آن محسوب میگردد، سادگی در استفاده آن میباشد. سادگی کلی این موتور باعث شده است نوشتن نرم افزار های سازگار با این موتور بسیار سریعتر و راحت تر صورت بگیرد.
موتور InnoDB
انجین InnoDB دارای مزیت های زیادی میباشد ولی یکی از مواردی که شاید متخصصین برنامه نویسان همیشه از آن یاد میکنند مصرف بیش از اندازه Ram سرور هست. این متخصصین همیشه در این باور هستند که با این وضعیت مصرف غیر بهینه میزان مموری سرور، InnoDB در مقابل MyISAM حرفی برای گفتن ندارد. البته این متخصصین بعضا فراموش میکنند که تمام امکانات این موتور را بایستی مورد بررسی قرار دهند. مصرف میزان Ram این موتور در مقابل پردازش های موازی ترنزکشن ها یا OLTP و همچنین پاسخگویی مناسب این موتور در محیط های عملیاتی واقعا بسیار بهینه میباشد.
این موتور در طی بررسی های بسیاری که توسط شرکت های مختلف انجام داده اند واقعا نتایج حیرت آوری کسب نموده است و مخصوصا در محبث اندیس های خوشه ای این موتور نتایج بسیار عالی میباشد.
همچنین قابلیت Clustering موتور InnoDB رمز اصلی موفقیت و پیشی گرفتن این موتور از سایر موتورهای MYSQL میباشد.
از دیگر مزایای این موتور پشتیبانی از قابلیت Fail Recovery یا Crash recovery میباشد. این قابلیت به شما اطمینان میدهد که به هنگام کرش کردن دیتابیس ریکاوری آنها بسیار سریعتر و راحت تر از آن چیزی خواهد بود که فکرش را میکنید.
این موتور در پردازش های بالا و حجم دیتابیس های بالا احتمال دارد به درد شما نخورد! البته در صورتی که مشکل منابع داشته باشید. با توجه به اینکه این موتور از تکنیک های جالبی برای نتیجه سریعتر استفاده میکند، در نتیجه میزان مصرف رم در پردازش های بالا بسیار زیاد خواهد بود. یکی از این ویژگی های جالب ایجاد جدول برای Query های با اندیس مرتب میباشد که باعث سرعت بسیار بهینه در دستیابی به دیتا ها میگردد؛ ولی همین تکنیک باعث استفاده بیش از اندازه از Ram نیز میگردد.
البته نباید فراموش کردن که امنیت، قابلیت اعتماد، پایداری و امکان استفاده موازی در این موتور بسیار حائز اهمیت است و باعث شده است که بسیاری از متخصصین این موتور را ترجیح دهند.
موتور MERGE:
این موتور با نام MRG_MYISAAM نیز شناخته میشود و در واقع روشی فراهم میکند تا بصورت منطقی جداول MyISAAM را ادغام کنید. این ادغام باعث افزایش سرعت خواهد بود.
موتور Memory:
این موتور را تقریبا برای موارد هاستینگ بدون کاربرد میتوان نامید، چون تکنین آن استفاده از Ram برای ذخیره سازی و پردازش میباشد و عمر آن بسته به آپتایم سرور میباشد. البته بایستی به این موضوع هم اشاره کرد که از MyISAAM سریعتر است و با نام HEAP نیز شناخته میشود.
موتور Archive:
همانطوری که از اسم آن مشخص است، این موتور از تکنیک آرشیو برای ذخیره سازی دیتا استفاده میکند. هنگامی که دیتا قصد Insert به دیتابیس را دارد فشرده شده و به هنگام Read از حالت فشرده خارج میگردد.
موتور CSV
در این موتور دیتا ها توسط Comma از هم جدا و مانند فرمت CSV ذخیره میگردد که دیتای NULL پشتیبانی نمیکند.
قابلیت های ذکر شده در این مقاله تنها بخشی از قابلیت های کلیدی این انجین ها بود. جهت آشنایی با قابلیت های انواع انجین های MySQL جدول زیر را میتوانید مطالعه کنید.