در مدیریت پایگاه داده (Database)، میتوان حجم فایلها را کاهش داد تا فضای بلااستفاده آزاد گردد. گاهی فایلهایی با حجم واقعی کم، فضای زیادی روی دیسک اشغال میکنند که نیاز به Shrink کردن را ضروری میسازد؛ این موضوع به خصوص در هاست ویندوز که اغلب میزبان SQL Server است، اهمیت دارد. در این مقاله، با روشهای Shrink دستی و اتوماتیک و تأثیر آن بر بهینه سازی دیتابیس برای وب سایت بیشتر آشنا میشویم.
shrink:
لغت shrink به معنی کوچک کردن و یا منقبض کردن است. Shrink فضاهای اضافی دیتابیس را حذف کرده و باعث افزایش حجم دیتابیس میشود.داخل دیتابیس، هر فایلی را می توان کاهش حجم داد تا فضای غیر قابل استفاده آزاد شود. این فایل می تواند DateFile و یا LogFile باشد. با اینکه موتورهای پایگاه داده مانند Microsoft SQL Server تلاش میکنند از فضای خالی مجدداً استفاده کنند، گاهی DataFile ها یا LogFile ها فضای زیادی اشغال میکنند که بازگردانی آن با Shrink ضروری میشود. این عملیات میتواند بخشی از فرآیند مدیریت سرور برای حفظ کارایی باشد.
دیتا و فایل های لاگ می تواند کاهش حجم داده شوند. حجم فایل های دیتابیس گروهی و یا جداگانه می تواند به صورت دستی کاهش یابد و یا اینکه دیتابیس می تواند به صورت اتوماتیک در بازه های زمانی مشخص نسبت به حذف فضاهای خالی اقدام کند.
عملیات Shrink عمدتاً در سیستمهای مدیریت پایگاه داده مانند SQL Server کاربرد دارد. درک تفاوتهای عملکردی و مدیریتی بین سیستمهای مختلف، مانند آنچه در مقایسه MySQL و SQL Server بررسی شده، به انتخاب ابزار مناسب برای مدیریت دادهها کمک میکند.
Shrink فایل ها همیشه از انتها شروع می شود. برای مثال اگر فایل ما ۵ گیگ باشد و با شیرینک کردن حجم آن ۴ گیگ شود، موتورهای دیتابیس فضای یک گیگ را از انتها آزاد خواهند کرد. اگر صفحه در بخشی قرار گرفته باشد موتور دیتابیس اولین فضای خالی را به آن اختصاص خواهند داد.
شرینک دیتابیس به صورت اتوماتیک
اگر گزینه AUTO_SHRINK برای دیتابیس فعال باشد، موتور دیتابیس به صورت اتوماتیک دیتابیس ها را شرینک خواهد کرد. گزینه AUTO_SHRINK با دستور ALTER DATABASE
فعال میشود (پیشفرض: غیرفعال). با فعالسازی آن، موتور پایگاه داده بهطور دورهای فضای استفاده شده را بررسی و در صورت وجود فضای خالی زیاد، اقدام به کوچکسازی خودکار فایلها میکند. هرچند این گزینه راحت است، اما برای کنترل بیشتر و جلوگیری از افت عملکرد ناگهانی، معمولاً مدیریت سرور به صورت دستی ترجیح داده میشود. موتور دیتابیس به صورت دوره ای فضاهای استفاده شده در هر دیتابیس را بررسی می کند و با فعال بودن این گزینه اقدام به کاهش سایز خواهد کرد. این کار در پس زمینه انجام خواهد شد و هیچ یک از یوزرهای دیتابیس را تحت تاثیر قرار نخواهد داد.
مدیریت فضای دیسک و انجام عملیاتی مانند Shrink دیتابیس، بخشی از نگهداری سرور است. استفاده از یک سرور مجازی ایران با منابع کافی و قابل مدیریت، به شما امکان میدهد تا کنترل بهتری بر عملکرد پایگاه داده و فضای ذخیرهسازی آن داشته باشید.
شرینک دیتابیس به صورت دستی
برای کنترل دقیقتر، میتوانید Shrink دیتابیس یا فایلهای خاص (Data/Log) را بهصورت دستی با دستورات DBCC SHRINKDATABASE
یا DBCC SHRINKFILE
اجرا کنید. این روش در سرویسهایی مانند سرور اختصاصی ایران که نیاز به مدیریت منابع دقیقتری دارید، کاربرد دارد. گاهی برای آزاد سازی کامل فضای فایل لاگ، نیاز به اجرای دستورات تکمیلی وجود دارد.
جمع بندی
اگرچه Shrink کردن میتواند فضا را آزاد کند، اما اجرای مکرر آن ممکن است باعث Fragment شدن دادهها و تاثیر منفی بر سرعت کوئری شود. برای بهبود سرعت سرور و پایگاه داده، باید استراتژیهای جامعتری مانند Indexing مناسب و بازنگری کوئریها را نیز در نظر گرفت.
با سلام
تاثیر شیرینک دیتابیس بر روی سرعت اجرای کوئریها چگونه است؟
در مدیریت بهتر حافظه موثر است و طبیعتا اثر مثبت در سرعت دارد