Shrink در دیتابیس چیست ؟

لغت shrink به معنی کوچک کردن و یا منقبض کردن است. Shrink فضاهای اضافی دیتابیس را حذف کرده و باعث افزایش حجم دیتابیس میشود.
Shrink در واقع فضای DataFile و LogFile را جمع و جور می کند.
Shrink، آخرین فضای پر را به اولین فضای خالی منتقل می کند.
با استفاده از Shrink  می توان فضاهای خالی بانک اطلاعاتی را از بین برد و آنها را در یک قسمت جمع نمود.

مثال:


فضاهای متمایز شده با رنگ قرمز، جزو فضاهای بدون استفاده محسوب می شود که بعد از عملیات Shrink قابل استفاده خواهد بود. شاید متوجه شده باشید که بعد از Shrink، ترتیب قرار گیری داده ها به هم ریخه است …!
بعد از عملیات Shrink در واقع Fragmentation اتفاق افتاده است، یعنی یک Page به صفحه ای قبل از خودش اشاره می کند. (X2 به یک صفحه قبل از خودش یعنی X3 اشاره می کند و X3 نیز به X4)

 

توضیحات کامل تر

 کاربرد Log Shrinking در SQL سرور
نکته منفی در خصوص Log Truncation این است که درست است که اطلاعات از فایل Transaction Log ها به Database منتقل می شوند و Truncate می شوند اما حجم فایل تغییری نمی کند و تغییری در میزان فضای اشغالی این موارد در هارد دیسک مشاهده نمی شود. این دقیقا چیزی است که شما در VMware در هنگام ایجاد کردن هارد دیسک ها بر می خورید اگر به خاطر داشته باشید اگر هارد دیسک خود را در حالت Thin Provision قرار بدهید در وهله اول اطلاعات حجم چندانی ندارند ، با وارد کردن اطلاعات درون این هارد مجازی فضای بیشتری اشغال می شود حال اگر این اطلاعات را از درون این هارد دیسک مجازی حذف کنید همچنان فضا اشغال شده است. با توجه به اینکه SQL Server پیشبینی می کند که ممکن است حجم داده های موجود در Transaction Log های شما به همان اندازه قبلی که Truncate شده است برسد بنابراین فضای هارد دیسکی که برای نگهداری این Log ها استفاده کرده است را رها نمی کند. خوب طبیعی است که اگر این فرآیند ادامه پیدا کند ممکن است ظرفیت زیادی از دیسک شما به یکباره اشغال شود و حجم Log File شما نیز افزایش پیدا کند . در چنین مواقعی شما باید بصورت دستی طی فرآیندی به نام Shrinking فضای اشغال شده توسط Log را رها کنید ،

 

شرینک دیتابیس به صورت اتوماتیک

اگر گزینه AUTO_SHRINK برای دیتابیس فعال باشد، موتور دیتابیس به صورت اتوماتیک دیتابیس ها را شرینک خواهد کرد. این گزینه با استفاده از دستور ALTER DATABASE تنظیم می شود و به صورت پیش فرض غیر فعال است. موتور دیتابیس به صورت دوره ای فضاهای استفاده شده در هر دیتابیس را بررسی می کند و با فعال بودن این گزینه اقدام به کاهش سایز خواهد کرد. این کار در پس زمینه انجام خواهد شد و هیچ یک از یوزرهای دیتابیس را تحت تاثیر قرار نخواهد داد.

 

شرینک دیتابیس به صورت دستی

شرینک دیتابیس و یا فایل های داخل آن می تواند به صورت دستی و با استفاده از دستور DBCC SHRINKDATABASE و یا DBCC SHRINKFILE انجام شود.

DBCC SHRINKFILE(<filename>,<desired_shrink_size>) 

 


پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

1 × 3 =