نمایش نتایج: از شماره 1 تا 1 , از مجموع 1

موضوع: تفاوت موتورهای ذخیره سازی در MySQL

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1
    کاربر اخراج شده
    تاریخ عضویت
    Aug 2013
    نوشته ها
    302
    تشکر تشکر کرده 
    146
    تشکر تشکر شده 
    829
    تشکر شده در
    387 پست

    54 تفاوت موتورهای ذخیره سازی در MySQL

    درود بر همگی

    موتورهای ذخیره سازی در MySQL ابزارهایی هستند که وظیفه ذخیره سازی و بازیابی اطلاعات جداول را انجام می‌دهند. موتور ذخیره سازی پیش فرض MySQL تا قبل از نسخه ۵٫۵٫۵ در اغلب موارد MyISAM بود، پس از آن InnoDB موتور ذخیره سازی پیش فرض شد. در حال‌حاضر دو موتور ذخیره سازی InnoDB و MyISAM بیشتر از دیگر انواع موجود در سایت‌ها مورد استفاده قرار می‌گیرند.







    در این مقاله قصد داریم به معرفی انواع مختلف موتورهای ذخیره سازی و تفاوت آن‌ها در MySQL بپردازیم.



    موتور ذخیره‌سازی InnoDB:

    از نسخه ۵٫۵٫۵ به بعد، InnoDB موتور ذخیره سازی پیش فرض MySQL شد و این موتور ذخیره سازی نسبت به MyISAM از پیچیدگی بیشتری برخوردار می‌باشد.
    یکی از ویژگی‌های آن پشتیبانی از transactionها می‌باشد. همچنین InnoDB از کلید خارجی جهت محدودیت روابط بین جداول پشتیبانی می‌کند که این موضوع حفظ روابط بین جداول یکی از دلایل پیچیده‌تر بودن آن نسبت به MyISAM می‌باشد.


    InnoDB از قابلیت crash-recovery پشتیبانی می‌کند و در صورت آسیب دیدن جدول به بازیابی آن کمک می‌کند. به‌همین دلیل در مواردی که اطلاعات مهم و حساس باشند استفاده از این موتور ذخیره سازی بهینه‌تر است.


    InnoDB حافظه بیشتری را نسب به MyISAM مصرف می‌کند و از نظر فیزیکی فایل‌های حجیم‌تری دارد، بنابر این اگر محدودیت در منابع وجود داشته باشد استفاده از InnoDB بهینه‌ نیست.
    این موتور ذخیره سازی دارای قابلیت lock (قفل کردن) در سطح رکورد و عدم قفل شدن کل جدول در عملیات ثبت و ویرایش ردیف‌ها می‌باشد؛ به‌ همین دلیل در سطح رکورد از سرعت بالایی جهت اجرای queryهای مربوط به insert/update/delete برخوردار می‌باشد.



    موتور ذخیره‌سازی MyISAM:

    یکی از ویژگی‌های مفید MyISAM پشتیبانی از full-text search می باشد و جدول‌هایی که از این موتور ذخیره سازی استفاده می‌کنند فضای کمتری از دیسک را اشغال می‌کنند.



    MyISAM نسبت به سایر موتورهای ذخیره‌سازی از سادگی بشتری برخوردار و برای افراد مبتدی مناسب‌تر است.


    MyISAM به‌دلیل locking در سطح جدول سرعت پائینی در queryهای insert/update دارد، اما سرعت آن در select بالا است.


    جدول‌ها در MyISAM می‌توانند به‌صورت فقط خواندنی (جهت کاهش فضا) ذخیره شوند. بنابراین درمواردی که سادگی و محدودیت منابع اولویت داشته باشد استفاده از این موتور ذخیره‌سازی بهینه می‌باشد.




    موتور ذخیره‌سازی Memory:

    در این نوع همانطور که از اسم آن نیز پیدا است کلیه داده‌ها در Memory (حافظه RAM) ذخیره می‌شود و با خاموش شدن سیستم داده‌های جدولی که با این نوع طراحی شده‌است از بین خواهد رفت.


    در مواردی که به سرعت بالا نیاز است و یا داده‌ها بصورت مداوم در حال نوشتن و خواندن هستند (مثل جداول temprory) استفاده از آن بهینه است.




    موتور ذخیره‌سازی CSV:


    در CSV داده‌ها به‌صورت باینری ذخیره نمی‌شوند و ذخیره داده‌ها در یک فایل csv انجام می‌گیرد. به‌دلیل این محدودیت، برای ذخیره تعداد زیادی داده یا انواع داده‌های بزرگ مناسب نیست.


    فایل‌های CSV بدلیل سادگی import و Export شدن به نرم افزارهایی مانند Excel ،OpenOffice ،Access و FileMaker تولید می‌شوند.





    موتور ذخیره‌سازی Archive:



    در Archive اغلب انواع داده MySQL پشتیبانی می‌شود اما تنها دستورات Select و Insert قابل استفاده است. اطلاعات جدولی از این نوع به‌صورت فشرده ذخیره می‌شود و غیر قابل ویرایش می‌باشد، بنابراین برای ذخیره log فایل‌ها (یا اطلاعاتی مانند صورت حساب‌های گذشته) و اطلاعات امنیتی مناسب می‌باشد.



    با توجه به این‌که Select از جدول‌هایی ذخیره شده با این نوع نیاز به خارج‌سازی اطلاعات از حالت فشرده وجود دارد، در جستجوها و روابط پیچیده این موضوع زمانبر خواهد بود.




    موتور ذخیره‌سازی Federated:

    Federated در نسخه MySQL ۵٫۰۳ اضافه و در آن امکان اتصال به سایر دیتابیس‌ها فراهم شده‌است، به عبارتی چند سرور MySQL که ازنظر فیزیکی جدا هستند، به هم متصل می‌شوند و یک پایگاه داده مجازی را تشکیل دهند. با استفاده از Federated می‌توان به یک دیتابیس دیگر متصل شد و داده‌های جدول‌ها را بدون Export یا Import نمودن به دیتابیس دیگر منتقل نمود.




    موتور ذخیره‌سازی BLACKHOLE:

    BLACKHOLE داده‌ها را دریافت می‌کند اما ذخیره نمی‌کند و مانند /dev/null در یونیکس است. در طراحی دیتابیس‌های توزیع شده که بطور خودکار داده‌ها تکرار شده اما بصورت لوکال ذخیره نمی شوند بهینه می‌باشد. بدون اینکه داده‌ها بصورت واقعی نوشته شوند امکان اجرای دستورات select و update وجود دارد.


    اگرچه بنظر می‌رسد که روش بیهوده‌ای است اما این روش جهت تست ساختار دیتابیس و کار با جدول‌های تعریف شده مفید می‌باشد.




    موتور ذخیره‌سازی Merge:


    با استفاده از Merge می‌توان مجموعه‌ای از جداول MyISAM یکسان را بطور منطقی دسته بندی کرده و بعنوان یک شی واحد درنظر بگیرد. با استفاده از این نوع موتور ذخیره سازی مدیریت مجموعه‌ای از جداول لاگ به آسانی انجام می‌شود و جستجوهای کارآمدتری را می‌توانید انجام دهید.






    روش تغییر موتور ذخیره‌سازی در MySQL:

    query تغییر موتور ذخیره سازی یک جدول به‌صورت زیر می‌باشد:



    کد PHP:
    ALTER TABLE table-name ENGINE InnoDB

    نام جدول مورد نظر را جایگزین table-name و نوع موتور ذخیره‌سازی را جایگزین InnoDB نمائید.



    مقایسه ویژگی های موتورهای ذخیره سازی در یک نگاه:




    Feature MyISAM Memory InnoDB Archive NDB
    Storage limits ۲۵۶TB RAM ۶۴TB None ۳۸۴EB
    Transactions No No Yes No Yes
    Locking granularity Table Table Row Table Row
    MVCC No No Yes No No
    Geospatial data type support Yes No Yes Yes Yes
    Geospatial indexing support Yes No No No No
    B-tree indexes Yes Yes Yes No No
    T-tree indexes No No No No Yes
    Hash indexes No Yes No No Yes
    Full-text search indexes Yes No Yes No No
    Clustered indexes No No Yes No No
    Data caches No N/A Yes No Yes
    Index caches Yes N/A Yes No Yes
    Compressed data Yes No Yes Yes No
    Encrypted data Yes Yes Yes Yes Yes
    Cluster database support No No No No Yes
    Replication support Yes Yes Yes Yes Yes
    Foreign key support No No Yes No No
    Backup / point-in-time recovery Yes Yes Yes Yes Yes
    Query cache support Yes Yes Yes Yes Yes
    Update statistics for data dictionary Yes Yes Yes Yes Yes





    منبع :

    تفاوت موتورهای ذخیره سازی در MySQL - ایران سرور

  2. تعداد تشکر ها ازzartosht به دلیل پست مفید


اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. تفاوت MySql با MSSQL چیست؟
    توسط سیدرضا بازیار در انجمن PHP-MySQL
    پاسخ ها: 4
    آخرين نوشته: June 21st, 2016, 20:42
  2. مشکل تایم اوت mysql و apache
    توسط traxian در انجمن دايرکت ادمين DirectAdmin
    پاسخ ها: 5
    آخرين نوشته: September 13th, 2013, 21:53
  3. پاسخ ها: 14
    آخرين نوشته: August 11th, 2013, 00:44
  4. فعال کردن ریموت mysql در سرور ویندوز و کنترل پنل plesk
    توسط oshidahost در انجمن سوالات و مشکلات
    پاسخ ها: 1
    آخرين نوشته: May 10th, 2012, 22:44
  5. نحوه ایجاد ریموت دیتابیس از نوع MySQL چی هست؟
    توسط sohrab.khan در انجمن سوالات و مشکلات
    پاسخ ها: 4
    آخرين نوشته: June 24th, 2010, 19:17

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •