واژه shrink که در فارسی شرینک خوانده میشود معنای لغوی “کوچک شدن” یا ” منقبض شدن” میدهد. شرینک دیتابیس به معنای کاهش حجم دیتابیس است. این مورد با آزاد کردن فضاهای خالی فایل اتفاق میافتد و فضای دیسکی که فایلهای دادهها و Log دیتابیس اشغال کردهاند را کاهش میدهد. شرینک دیتابیس به دو صورت دستی و اتوماتیک انجام میشود که با فعال کردن auto shrink سایز دیتابیس بصورت اتوماتیک کاهش داده میشود. در این مقاله
شرینک دیتابیس با آزاد کردن فضای خالی در فایل اتفاق میافتد. ذخیره فایلها در ویندوز به صورت صفحه بندی است. شرینک فضاهای خالی و اشغال نشده بین دادهها را حذف میکند و دادهها را از صفحات آخر به فضاهای خالی نزدیکتر از صفحات اول منتقل میکند و نهایتاً صفحات آخر را حذف مینماید. به صورت خلاصه shrink آخرین فضای پر را به اولین فضای خالی منتقل می کند.
شرینک دیتابیس در sql server به دو صورت دستی و اتوماتیک انجام میشود.
برای shrink دیتابیس بصورت دستی و کاهش حجم فضای اشغالی دیتابیس، با استفاده از نرم افزار Microsoft SQL Server Management Studio به دیتابیس متصل شوید.
مانند تصویر ابتدا در سمت چپ بالا روی آیکن کامپیوتر که به دیتابیس متصل است کلیک نمایید. این آیکن برای connect به دیتابیس یا برقراری اتصال به دیتابیس است.
در پنجرهای که باز میشود، فیلد Server Type را روی حالت Database Engine بگذارید.
Server name نام سروری است که دیتابیس روی آن قرار دارد.
در مارال هاست نام دیتابیس معمولاً با یک IP معتبر همراه شماره پورت سرویس sql server است.
نکته: اگر کنترل پنل پلسک دارید از بخش database میتوانید نام دیتابیس را بررسی نمایید.
فیلد Authentication را روی SQL Server Authentication قرار دهید
در بخش Login هم نام یوزری که دسترسی کامل به دیتابیس دارد، وارد نمایید. به عبارتی این یوزر db_owner است.
Password نیز پسورد یوزر دیتابیس است.
شرینک دیتابیس به صورت دستی
برای شرینک دیتابیس بصورت دستی بعد از اتصال مانند تصویر زیر روی نام دیتابیس کلیک راست نمایید و از گزینه Tasks روی shrink و سپس گزینهی Database را انتخاب نمایید.
در پنجرهای که باز میشود در مقابل Database نام دیتابیس را نوشته است.
Currently allocated space نیز میزان فضایی که در حال حاضر به دیتابیس اختصاص داده شده است را به مگابایت نشان میدهد.
و Available free space نیز میزان فضایی که بعد از شرینک آزاد میشود، مشخص میکند. این عدد به مگابایت است و در پرانتز نیز به درصد نسبت به حجم کلی دیتابیس نوشته میشود.
نکته: عدد مقابل Available free space دقیق نیست و معمولاً خطا دارد.
شرینک دیتابیس به صورت اتوماتیک
با فعال کردن ویژگی auto shrink سرویس SQL server به صورت دورهای شرینک دیتابیس انجام میشود و نیازی به انجام shrink دیتابیس به صورت دستی نیست.
برای فعال کردن auto shrink مطابق با توضیحات بالا با یوزر db_owner و نرم افزار Microsoft SQL Server Manaement Studio به دیتابیس متصل شوید.
روی نام دیتابیس کلیک راست نمایید روی properties که آخرین گزینه است را انتخاب نمایید.
پنجره Database Properties باز خواهد شد.
از قسمت select a page در ستون سمت چپ کناری options را انتخاب نمایید. در این صفحه تنظیمات دیتابیس وجود دارد که شما بنابر نیازتان میتوانید آنها را فعال یا غیر فعال نمایید.
در جدول پایین صفحه از گروه Automatic گزینه Auto Shrink را پیدا کنید. این گزینه به صورت پیشفرض غیرفعال است. (روی حالت False قرار دارد)
در ستون مقابل روی علامت فلش کوچک به سمت پایین کلیک نمایید تا گزینهها باز شود. با انتخاب حالت True شرینک اتوماتیک دیتابیس فعال میشود. در نهایت نیز روی OK کلیک کنید و از این پس موتور SQL Server بصورت دوره ای (مثلاً هر چند ساعت یکبار) دیتابیس را شرینک میکند.
نکته: به صورت کلی Shrink دیتابیس index دادهها را تغییر میدهد که بعلت جابجایی اطلاعات در صفحات فایل میباشد. بنابراین ممکن است دادهی صفحه x+1 قبل از صفحه x قرار بگیرد که باعث میشود یک Page به صفحهی قبل از خودش اشاره کند. این مورد باعث افزایش بعضی از وظایف موتور SQL Server مانند Fragmentation میشود همچنین مدت زمان اجرای وظایفی مانند database locking را افزایش میدهد. به همین علت auto shrink بصورت پیشفرض غی فعال میشود و توضیه میشود فعال نشود.
نکته: با توجه به نکتهی قبلی اگر Available free space نسب به حجم کلی دیتابیس کم است و باعث آزاد شدن فضای زیادی نمیشود نیازی به shrink دیتابیس نیست.
نکته: ممکن است شرکت هاستینگ دسترسی هاست را برای شرینک دیتابیس و auto shrink را بسته باشد، در صورتی که هاست شما نزد مارال هاست است یک تیکت ارسال نمایید.