ورود به سایت

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

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

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

You have no items in your shopping cart.

امتیاز
(3 )

مقایسه ی انجین های 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

نظرات (6)

  1. fafa

سلام من در مورد یه چیزی سر در گم شدم در آموزش لاراول استاد فرمودن روش بهتر استفاده از MyISAM هست
و حتی رلیشنها و فورنکی ها و ارتباطشو توضیح میدن اینجا با توضیحاتی که داده شده نشون میده innoDB بهتر هست و یه سری چیزایی که گفته تو MyISAM نیست هم هست
کلا من گیج شدم لطفا یکی توضیح بده یلاخره این یا اون کل پروژرو تو لاراول با MyISAM نوشته 6 ماه وقت گزاشتم الان اینو دیدم داغون شدم باید دوباره برم تمام کنترلارو عوض کنم یا چیکار کنم ایا فقط از دیتا بیس تغیر بدم مشکل حل میشه

  1. زهرا    fafa

تو آموزش لاراول هم گفتن innodb
بعدشم شما فقط دیتابیس رو تغییر میدید با سورس پروژه کاری ندارید

  1. Fafa    زهرا

خوب این ممکنه بعدا پروژرو دچار مشکل کنه؟ یا این اتفاق نمیفته لطفا راهنمایی کنید من از روش orm برای اتصال استفاده کردم پروژرو ران کنم دیتا بیس پر از داده خواهد شد و تغیر دوبارش دیگه امکان پذیر نیست

  1. ابوالفضل طالبی    Fafa

خیر مشکلی ایجاد نمیشه و با داده کاری نداره و میتونید انجین رو تغییر بدید هر زمانی که مایل بودید

  1. فراز صالحی

اگر امکان داره در مورد کاربرد انجین های دیگر هم توضیح بدید.

  1. فاطمه

با عرض ادب و احترام
مقاله ای بسیار پربار ، روان و عالی . ممنونم

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

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

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

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

استاد عزیز سلام وقت بخیر خدا قوووت امیدوارم بدون خستگی این راه پر از عشق آموزش رو پیش ببرید کلیپ اول رو که دیدم و اون جا که شهر های مختلف ایران رو نشون می دادید که منطقه غرب هیچ کس اسم لاراول رو ترند نکرده بود هم خنده م گرفت هم ناراحت شدم ولی الان که دارم این مطلب رو می نویسم دوبا
آقای طالبی یه تشکر فراوون به شما بدهکار هستم من 10 سال قبل پروژه دانشگاهیم با php بود ازون موقع از php و همه ی فریم ورکاش هم بدم می اومد و هم فک میکردم ناکار آمد هستن الان از سر اجبار یه پروژه ای رو باید با لاراول بالا می آوردم وآموزش های مختلفی دیدم ولی این دوره ی شما بسیار عالی بود
سلام استاد عزیز، بنده چند سال پیش با شما دوره PHP برداشته بودم و باید بگم من PHP رو از شما دارم ، انقدر که روان و کاربردی توضیح داده بودین و هنوز فیلمهای اون جلسات رو برای خودم مرور میکنم، اما چند وقتی بود با لاراول شروع به کار کردم تا اینکه توی جستجوهام به این آموزش شما رسیدم و تا ا...
درود..من قبلا با لاراول در حد متوسط کار کردم..تصادفا با سایتتون آشنا شدم و فیلمای لاراول رو گرفتم و دیدم..متونم بگم یکی از بهترین های وب ایران میتونه باشه این دوره..از استاد عزیز این دوره آقای طالبی نهایت تشکر رو دارم..و بیصبرانه منتظر ادامه ی این دوره م..پر انرژی تر از قبل به کارت

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

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