چرا دیتابیس InnoDB من فضای زیادی اشغال کرده است ؟

InnoDB یکی از موتورهای ذخیره سازی اطلاعات در دیتابیس MySQL است. در مقایسه با سایر موتورهای ذخیره سازی پایگاه داده (همچون MYISAM و ... ) ، InnoDB دارای نقصی در زمینه محاسبه فضای استفاده نشده در جداول دیتابیس است. این مسئله به مرور زمان باعث حجیم شدن پایگاه داده مربوطه خواهد شد.
 
همانطور که می دانید در دیتابیس سرور یک فلدر با نام مشابه به ازای هر دیتابیس (در مسیر مشخص شده ) ایجاد می شود که این فلدر شامل موارد ذیل می باشد :
        -          تمامی فایلهای مربوط به دیتابیس
        -           فایلهای ibd  ، که تنها برای هر یک از جداول InnoDB  ایجاد می شود
 
نکته : این فایلها شامل ساختار دیتابیس در سیستم/ سرور مربوطه می باشند و در زمینه ریستور قابل استفاده نخواهند بود.
 
فایلهای ibd  شامل لاگ های مربوط به جداول innoDB  می باشند که به مرور زمان ، با انجام تراکنش ها ، حجم این فایلها به صورت چشم گیری بالا می رود و از آنجا که حجم اصلی دیتابیس از طریق فلدر موجود در دیتابیس سرور محاسبه می گردد لذا حجم کل دیتابیس نیز به همین منوال افزایش خواهد یافت.
متأسفانه در MySQL (برخلاف MS-SQL ) ابزار یا دستوری برای حذف لاگ فایلها وجود ندارد. همچنین با حذف و ایجاد مجدد دیتابیس InnoDB  اگرچه این مشکل به صورت موقت حل خواهد شد ولی متاسفانه با انجام تراکنش های جدید و ازدیاد حجم لاگ فایلها مجدداً شرایط قبل تکرار خواهد شد.
 
از آنجا که گزارش حجم جداول در ابزار PHP MY Admin شامل حجم لاگ فایلها نمی باشد لذا جمع حجم جداول کمتر از حجم واقعی اشغال شده  ،در همان زمان ، در دیتابیس سرور خواهد بود. همچنین حجم بک آپی که از این طریق تهیه می شود نیز به دلیل فوق ذکر ، کمتر از حجم واقعی خواهد بود.
بنابراین راهکار عملی در صورت امکان ، تغییر موتور جداول از InnoDB  به MYISAM  میباشد. در صورتیکه شرایط جداول و کارکردهای مورد نیاز امکان این تغییر را فراهم ننماید ، تنها راهکار ممکن، ارتقاء سرویس میزبانی به پلان بالاتر با حجم دیتابیس مناسب خواهد بود.

باتوجه به توضیحات ارائه شده در رابطه با فایل ibd  ، بک آپ هایی که به صورت خودکار (مانند بک آپ های ایران هاست) از جداولInnoDB   تهیه می شوند قابل ریستور نخواهند بود لذا در صورتیکه موتور جداول دیتابیس شما InnoDB  می باشد به خاطر داشته باشید که باید به صورت دوره ای از طریق ابزار PHP MY Admin  نسبت به تهیه بک آپ از اطلاعات خود اقدام نمایید در غیر اینصورت متاسفانه ایران هاست در این مورد بک آپ قابل بازیابی جهت ارائه نخواهد داشت.

 

Add Feedback