0

You have no items in your shopping cart.

0

ورود به سایت

نام کاربری *
رمز عبور *
مرا بخاطر بسپار

ایجاد حساب کاربری

فیلدهای ستاره دار الزامی است.
نام *
نام کاربری *
رمز عبور *
تایید رمز عبور *
ایمیل *
تایید ایمیل *
کپچا *
امتیاز
(2 )

مقایسه ی انجین های MyISAM و InnoDB در MySQL

مقایسه ی انجین های MyISAM و InnoDB در MySQL

مقایسه ی انجین های MyISAM و InnoDB در MySQL

همانطور که میدانید دیتابیس mysql دارای انجین های متنوعی برای مدیریت پایگاه داده و جداول میباشد که لیستی از آنها را در زیر مشاهده میکنید:

  • InnoDB
  • MyISAM
  • Memory
  • CSV
  • Merge
  • Archive
  • Federated
  • Blackhole

شاخص ترین انجین یا همان موتور دیتابیس InnoDB میباشد که به دلیل ویژگی هایی که دارد به عنوان انجین اصلی در طراحی جداول دیتابیس بیشتر سیستم های مدیریت محتوایی که با PHP طراحی شده اند مورد استفاه قرار گرفته است.این در حالی است که در گذشته نه چندان دور اکثر سیستم های مدیریت محتوا از انجین MyISAM استفاده میکرده اند.

مقایسه ی MyISAM و InnoDB

در اینجا به چند تفاوت شاخص در این دو انجین اشاره میکنیم:

  • سیستم قفل گذاری: در انجین MyISAM زمانی که قرار است اطلاعاتی وارد یک جدول از دیتابیس شود ، MyISAM به صورت خودکار کل جدول شما قفل میشود تا زمانی که اطلاعات وارد جدول شده و سپس دستور insert بعدی اجرا میشود ، یعنی شما در یک لحظه نمیتوانید چندین insert را در کل یک جدول انجام دهید.اما در InnoDB هنگام insert کردن داده ها ، تنها همان فیلدی که در حال دریافت داده است قفل شده و کل جدول قفل نمیشود و از این جهت سرعت ورود داده ها در InnoDB بالاتر میباشد.
  • Relation ها و Foreignkey : تفاوت عمده و مهم دیگری که در این دو انجین وجود دارد عدم امکان ایجاد Foreignkey در MyISAM میباشد که به همین دلیل امکان ساخت Relation بین جداول در MyISAM وجود ندارد . اگر معماری جداول دیتابیس پروژه ی شما مبتنی بر Relation های مهمی است حتما باید از انجین InnoDB استفاده نمایید.
  • Transaction ها : اشکال دیگری که در MyISAM وجود دارد عدم وجود ویژگی Transaction میباشد . ویژگی Transaction امکان میدهد که قبل از درج اطلاعات صحت آنها را بررسی کنیم و در صورت عدم صحت اطلاعات را وارد دیتابیس نکنیم و به مرحله ی قبلی برگردیم و یا به اصطلاح roll back انجام دهیم.در فریم ورک لاراول از امکان roll back استفاده ی زیادی میشود و اگر دیتابیس شما بر روی انجین MyISAM قرار داشته باشد امکان roll back وجود ندارد.
  • کرش کردن جداول دیتابیس : در انجین MyISAM به دلیل ساختار ، خواندن اطلاعات سرعت بیشتری دارد به همین دلیل گاه و بی گاه برخی جداول شما دچار صدمه یا به اصطلاح کرش (crash) میشوند که نیاز دارید تا با fix یا تعمیر جداول مشکل کرش کردن را رفع کنید و این در حالی است که اگر شما جدولی با چند میلیون رکورد داشته باشید ، تعمیر آن در صورت کرش کردن ممکن است روزها زمان ببرد!! . در انجین InnoDB مشکل کرش کردن وجود ندارد.

مهاجرت از MyISAM به InnoDB

اگر تصمیم گرفته اید که جداول خود را از MyISAM به InnoDB تغییر بدید راه حل ساده است.به دو روش میتوانید اینکار را انجام دهید.یکی با استفاده از یک کوئری ساده و دیگری از طریق phpmyadmin میباشد که هر دو روش را به شما توضیح خواهیم داد.دقت کنید که تغییر از MyISAM به InnoDB مشکلی برای داده های شما ایجاد نمیکند ولی با اینحال همیشه بک آپ گرفتن از اطلاعات هنگام تغییرات در دیتابیس را فراموش نکنید.

  • تغییر انجین جدول از MyISAM به Innodb در برنامه ی phpmyadmin

ابتدا طبق تصویر زیر جدول خود را با کلیک روی گزینه ی Structure انتخاب کنید

اکنون وارد قسمت Operations شده و طبق تصویر گزینه ی InnoDB را انتخاب و در آخر بر روی دکمه ی Go کلیک کنید تا انجین جدول شما تغییر نماید

  • تغییر انجین جدول از MyISAM به InnoDB با استفاده از کوئری

برای اجرای یک کوئری که انجین جدول یا جداول خود را یکجا تغییر دهید میتوانید از کوئری زیر استفاده نمایید.دقت کنید که در کوئری زیر بجای عبارت table_name نام جدول خود را قرار دهید

ALTER TABLE table_name ENGINE=InnoDB;

نحوه ی تغییر انجین پیشفرض در سرور MySQL

شاید این پرسش برای شما بوجود آید که چگونه انجین پیشفرض در سرور MySQL را تغییر دهیم؟ برای مثال اگر به صورت پیشرفرض انجین MyISAM بر روی سرور MySQL شما فعال باشد ، هر جدولی که در دیتابیس های خود ایجاد کنید در همان ابتدا از نوع MyISAM هستند و مجبورید که هنگام ساخت جدول و یا پس از ساخت انجین را تغییر دهید که کار شما را بیشتر میکند.

پس راه حل بهتر این است که با یک کوئری ساده برای همیشه انجین پیشفرض در سرور MySQL را تغییر دهیم تا به صورت خودکار با ساخت هر جدولی InnoDB برای ما تنظیم گردد.کافیست کوئری زیر را در phpmyadmin و در سربرگ sql تایپ کنید و اجرا کنید:

SET GLOBAL default_storage_engine=INNODB;


میتوانید این مطلب را چاپ و یا به صورت PDF دانلود کنید

چاپ/PDF

نظرات (0)

نظری ثبت نشده است

سوالات و نظرات خود را ثبت نمایید.سوالات و نظرات توسط مدیران سایت پاسخ داده میشوند

ارسال نظر به صورت میهمان ثبت نام کنید و یا وارد شوید به حساب کاربری خودتان
پیوست ها (0 / 3)
Share Your Location
76 دوره ی آموزشی
32,683 دانشجو
933,257 بار دانلود

برخی نظرات کاربران

درود..من قبلا با لاراول در حد متوسط کار کردم..تصادفا با سایتتون آشنا شدم و فیلمای لاراول رو گرفتم و دیدم..متونم بگم یکی از بهترین های وب ایران میتونه باشه این دوره..از استاد عزیز این دوره آقای طالبی نهایت تشکر رو دارم..و بیصبرانه منتظر ادامه ی این دوره م..پر انرژی تر از قبل به کارت
سلام استاد عزیز، داشتم به این فکر میکردم که اگه کسی بخواد لاراول یاد بده واقعا میشه از این بهتر بگه یا نه؟! به این نتیجه سیدم که واقعاااااا عالییییییه.... واقعا ممنونم... ایشالا که خیییل زود تکمیل بشه و من هم که دیگه گمونم معتاد آموزش هاتون شدم و باید بقیه ی آموزش های سایت رو هم کم
سلام استاد عزیز ممنون از تدریس فوق العاده تون خیلی خیلی عالیه. میخواستم خواهش کنم اگر ممکنه سایت نهایی رو به روش restfull api پیاده سازی بفرمایید تشکر فراوان از زحمات شما .
من تازه کار هستم چقدر خوب که در کنار این مطلب مفید دوره ی پی اچ پی هم رایگان قرار دادید.تا ویدیو شماره 11 را دیدم که بسیار با تسلط و صدای خوب و عالی آموزش داده شده جای تشکر و قدردانی دارد

الف یار- مهارت بیشتر ، درآمد بیشتر

الف یار مرجع آموزشهای حرفه ای در زمینه ی برنامه نویسی و طراحی وب از سال 1390 فعالیت خود را آغاز کرده است و تا کنون ویدیو های آموزشی متفاوت و جامعی را به مخاطبان خود ارائه کرده است.
الفیار دارای مجوز نشر دیجیتال به شماره 2858 از وزارت ارشاد میباشد و کپی برداری و نشر محصولات آموزشی الفیار شرعا حرام و دارای پیگرد قانونی خواهد بود