مقدمهاگر شما هم یک پایگاه داده (SQL Server) با جدولی دارید که رکوردهای زیادی را ذخیره می کند. زمانی که نیازی به نگهداری داده های قدیمی ندارید میبایست آنها را تخلیه کنید. به عنوان مثال، شما فقط باید سوابق پنج سال گذشته را نگه دارید، اما پایگاه داده شما سوابق بیست سال گذشته را نگهداری می کند. هر چیزی که بیش از پنج سال است باید دور ریخته شود. با این حال، متوجه شده اید که وقتی رکوردهای قدیمی را که مجموعاً 20 گیگابایت بودند، حذف کردید اندازه فایل شما روی هارد دیسک تغییر نکرد! فرض کنید که اندازه فایل جدول 60 گیگابایت بود و شما 20 گیگابایت از رکوردهای قدیمی را حذف می کنید. انتظار دارید حجم فایل به 40 گیگابایت کاهش یابد، اما در عوض 60 گیگابایت باقی می ماند. هنگامی که یک پایگاه داده ایجاد می کنید، در ابتدا یک اندازه پایه برای فایل های mdf و ldf تعیین می کنید یا به مقادیر پیش فرض تعیین شده توسط SQL Server تکیه می کنید.این نقطه شروع است و اندازه فایل با افزودن داده های بیشتر در جدول ها افزایش می یابد. در این مطلب قصد داریم روش حل این موضوع را با قابلیت Shrink Database بررسی کنیم. |
پس از حذف حجم زیادی از داده ها از پایگاه داده، متوجه می شوید که اندازه فایل های mdf و ldf مانند قبل از حذف داده ها باقی می مانند. این به این دلیل است که SQL Server حداکثر اندازه فایل را به عنوان فضای رزرو شده نگه میدارد.
دیتابیس SQL علاوه بر فایل اصلی که شامل داده های دیتابیس است یک لاگ فایل نیز دارد، فایل اول، فایل اصلی است که دادهها روی آن نگهداری و ذخیره میشوند (فایلی با پسوند mdf.) دومین فایل مربوط به ثبت وقایع اتفاق افتاده روی پایگاه داده است و هر تراکنشی که در پایگاه داده انجام میشود در این فایل ذخیره میشود (فایلی با پسوند ldf. ) حجم فایل ldf با توجه به اینکه بصورت لحظه ای و به ازای هر تغییر در حال افزایش می باشد، ممکن است باعث بالابردن ناگهانی و غیر طبیعی حجم دیتابیس شما شود و زمانی که کل فضای هارد دیسک را اشغال کند، عملا دیگر هیچ عملیاتی روی پایگاه داده انجام نمیشود.
shrink database چیست؟
اگر بخواهید فضای رزرو شده را دوباره به دست آورید باید از SHRINK FILE و SHRINK DATABASE برای بازگرداندن این فضا استفاده کنید.
به صورت اختیاری، می توانید به SQL Server اجازه دهید فضای رزرو شده را برای استفاده در زمانی که مقدار رکوردها دوباره در پایگاه داده افزایش می یابد، حفظ کند.
اگر میخواهید پس از حذف دادهها، فضای رزرو شده پایگاه داده را کم کنید و بعداً با درج مجدد دادهها، فضای رزرو شده افزایش پیدا کند باید بدانید این روش ممکن است باعث تکه تکه شدن دیسک فیزیکی شود و بر عملکرد تأثیر بگذارد! پس مطمئن شوید که یکپارچه سازی دیسک را پس از آن انجام دهید.
___________________________________________________________________________________________________________
” شما نمی توانید پایگاه دادهای را که در حال حاضر بکاپ گیری میشود فشرده کنید، همچنین نمی توانید از پایگاه دادهای که در حال حاضر در مرحله فشرده سازی است، نسخه پشتیبان تهیه کنید. “
___________________________________________________________________________________________________________
دیتابیس را تا چه حجمی میتوان فشرده کرد؟
اگر یک پایگاه داده با حجم اولیه 8 مگابایت ایجاد شده باشد اما به 4 گیگابایت افزایش یابد، کوچکترین اندازه ای که می توانید پایگاه داده را به آن کوچک کنید، اندازه اصلی 8 مگابایت است.
کاهش حجم با Shrink
- ابتدا به SQL متصل شوید. (می توانید به این منظور از نرم فزار SQL Server Management Studio استفاده کنید)
- روی نام دیتابیس مورد نظر راست کلیک نموده و در زیر شاخه Tasks گزینه Shrink و زیر شاخه Files را انتخاب کنید.
- از قسمت File Type گزینه log را انتخاب کنید.
- سپس بر روی دکمه OK کلیک کنید بدین صورت حجم لاگ دیتابیس شما کاهش خواهد یافت.
کاهش حجم با NewQuery
- ابتدا به SQL متصل شوید.
- روی دیتابیس مورد نظر کلیک راست کرده و گزینه NewQuery را انتخاب نمایید.
- دستورات زیر را در آن کپی و اجرا نمائید.
۱) به جای your_db از نام دیتابیس موردنظر خود استفاده نمایید.
۲) پس از مشاهده نتیجه نام فایل لاگ را کپی نمایید.
۳) به جای your_db نام دیتابیس موردنظر خود و به جای your_db_log نام فایل لاگ را قرار دهید.
کوئری را اجرا کنید تا پیغام موفقیت آمیز بودن عملیات را دریافت کنید.
چکیده مطلبهمانطور که در بالا توضیحات کامل ارائه شد، هر بخش دیتابیس شامل دو فایل است، یکی فایل اصلی و دیگری فایل ارور لاگ آن که جزئیات دقیق را ثبت میکند،از .شرح وضعیت این فایل مشخص است که به دلیل بررسی لحظه ای حجم آن دائم در حال افزایش است. در نتیجه منجر به افزایش حجم کلی دیتابیس میشود و میبایست فایل های اضافی را حتما به صورت دوره ای با روش های ارائه شده در بالا حذف کنید و حجم را کاهش دهید. |