جلوگیری از رشد سریع حجم دیتابیس شیرپوینت

قصد دارم تا در این مقاله به نحوه کاهش سرعت رشد حجم دیتابیس شیرپوینت بپردازم. همانطور که میدانیم نحوه ذخیره سازی اطلاعات در دیتابیس بدین شکل است که ابتدا دیتا داخل فایل mdf یا همان فایل master ذخیره میشود و در ازای آن در فایل ldf یا همان log نحوه ذخیره سازی آن ثبت میگردد. این در صورتی است که تغییرات بر روی داده های mdf هم دقیقا با همین متد مجددا در ldf لاگ برداری میشود. نکته ی اصلی آن است که این اطلاعات علاوه بر mdf تقریبا دو یا سه برابر در ldf لاگ برداری میشود. اینکه چرا در دیتابیس به اینگونه اطلاعات ذخیره میشود در مقاله دیگری توضیح داده خواهد شد، اما موردی که در این مقاله به آن خواهیم پرداخت آن است که اگر حجم دیتابیس شیرپوینت ما در حال رشد سریع باشد و ما محدودیت فضای ذخیره داشته باشیم باید چه کنیم؟

در دیتابیس نحوه لاگ گیری به سه صورت است:

  • full: تمامی تغییرات دیتابیس را در همان لحظه و بدون مکس داخل فایل ldf ذخیره میکند.
  • bulk: لاگها به صورت گروهی و دسته ای بر روی فایل ldf ذخیره میشود. که در این صورت حجم فایل ldf به صورت لحظه ای بالا نرفته و در موعد زمانی خاص و قابل تنظیم به یکباره ارتقاء پیدا میکند.
  • simple: در این صورت اطلاعات مختصری در رابطه با ایجاد دیتابیس در فایل ldf نگهداری میشود و اطلاعات دیگری در این فایل ذخیره نمیشود. که در این حالت از recovery mode به شدت حجم ldf کاهش پیدا میکند حدودا چند مگابایت میشود.

در صورتیکه به مطالعه دقیقتر در رابطه با recovery model احتیاج دارید توصیه میکنم حتما به سایت مایکروسافت و این لینک سر بزنید.

تمامی دیتابیس ها در حال ساخته شدن توسط شیرپوینت به صورت پیش فرض با recovery model از نوع full ساخته میشوند که بسیار بسیار فضای زیادی را به خود اختصاص میدهند. لذا در صورتی که شما هم نیاز به simple کردن تمامی دیتابیسها به یکباره دارید میتوانید از دستور زیر استفاده نمایید:

تبدیل تمامی recovery model ها به simple:

select 'alter database ['+name+'] set recovery simple' from master.sys.databases where database_id > 4 and state_desc = 'online'

با استفاده از کد بالا نام تمامی دیتبایسها در کنار دستور لازم جهت تبدیل به simple برای شما ظاهر میشود. که کافیست نتیجه query را در یک new query کپی و پیست کنید و آن را run کنید. تا تمامی دیتابیسها تبدیل به simple شوند. پس از آن نوبت به shrink کردن دیتابیسها میشود:

shrink کردن همه دیتابیسها:

به منظور کاهش حجم دیتبایس شیرپوینت میتواند از دستور زیر استفاده نمایید:

SELECT 
      'USE [' + d.name + N']' + CHAR(13) + CHAR(10) 
    + 'DBCC SHRINKFILE (N''' + mf.name + N''' , 0, TRUNCATEONLY)' 
    + CHAR(13) + CHAR(10) + CHAR(13) + CHAR(10) 
FROM 
         sys.master_files mf 
    JOIN sys.databases d 
        ON mf.database_id = d.database_id 
WHERE d.database_id > 4;

و دقیقا همانند بخش قبلی، نتایج این کوئری رو در یک new query کپی و پیست کنید و اجرا کنید، تا تمامی دیتابیسها shrink بشوند.

یک دیدگاه در “جلوگیری از رشد سریع حجم دیتابیس شیرپوینت

دیدگاهتان را بنویسید

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