بازدید کننده 102 چهار شنبه 6 اسفند 1404 گروه: عمومی چاپ
فهرست مطالب... +

یکی از مشکلات رایجی که مدیران پایگاه داده و توسعه‌دهندگان با آن مواجه می‌شوند، بزرگ شدن بیش از حد فایل‌های دیتابیس است. این اتفاق معمولاً پس از حذف حجم زیادی از داده‌ها، اجرای لاگ‌های سنگین، یا انجام عملیات موقتی رخ می‌دهد. در چنین شرایطی، استفاده از فرآیند Shrink Database می‌تواند فضای اشغال‌شده را آزاد کرده و حجم فایل‌های دیتابیس را کاهش دهد.

در این مقاله به‌صورت کامل و تخصصی با مفهوم Shrink، روش‌های انجام آن، نکات مهم و بهترین شیوه‌های استفاده آشنا می‌شوید.

Shrink Database چیست؟

شرینک کردن دیتابیس (Shrink Database) فرآیندی در SQL Server است که طی آن فضای خالی داخل فایل‌های دیتابیس حذف شده و حجم فیزیکی فایل‌ها کاهش پیدا می‌کند.

به زبان ساده:

  • وقتی داده‌ها حذف می‌شوند، فضای فایل دیتابیس آزاد می‌شود اما اندازه فایل کم نمی‌شود.
  • عملیات Shrink باعث می‌شود این فضای خالی از انتهای فایل حذف گردد.

چرا دیتابیس بزرگ می‌شود؟

افزایش حجم دیتابیس همیشه به معنی افزایش داده نیست. مهم‌ترین دلایل عبارتند از:

  • حذف حجم زیادی از داده‌ها
  • پاک شدن لاگ‌ها
  • عملیات Import و Export موقت
  • Backup ناقص
  • Auto Growth بیش از حد

در این شرایط حجم فایل دیتابیس زیاد است اما بخش زیادی از آن خالی می‌باشد.

چه زمانی باید دیتابیس را Shrink کنیم؟

یکی از بزرگ‌ترین اشتباهات مدیران سرور، انجام Shrink به صورت دوره‌ای است.

 Shrink نباید به صورت روزانه یا هفتگی انجام شود.

زمان‌های مناسب برای Shrink

  • بعد از حذف حجم زیادی از داده‌ها
  • بعد از آرشیو اطلاعات
  • پس از پاکسازی لاگ‌ها
  • زمانی که فضای دیسک سرور کم شده است

معایب شرینک کردن دیتابیس

Shrink عملیات حساسی است و در صورت استفاده نادرست می‌تواند مشکلات جدی ایجاد کند.

مهم‌ترین معایب

1️⃣ Fragmentation شدید Index ها

Shrink باعث تکه‌تکه شدن ایندکس‌ها می‌شود که Performance را کاهش می‌دهد.

2️⃣ افت سرعت دیتابیس

در زمان اجرای Shrink، دیتابیس تحت فشار IO شدید قرار می‌گیرد.

3️⃣ افزایش مصرف CPU و Disk

Shrink یکی از سنگین‌ترین عملیات‌های SQL Server محسوب می‌شود.

انواع روش‌های Shrink

در SQL Server سه روش اصلی وجود دارد:

روش اول: Shrink کل دیتابیس

این روش کل فایل‌های دیتابیس را کوچک می‌کند.

DBCC SHRINKDATABASE (DatabaseName); 

مزایا:

  • ساده
  • سریع

معایب:

  • کنترل کمتر
  • Fragmentation زیاد

 

روش دوم: Shrink فایل دیتابیس (روش حرفه‌ای)

در این روش فقط فایل خاصی کوچک می‌شود.

DBCC SHRINKFILE (FileName, TargetSize); 

مزایا:

  • کنترل دقیق‌تر
  • کاهش آسیب به Performance
  • روش استاندارد DBA ها

روش سوم:

برای این منظور بعد از اتصال ریموت به دیتابیس (پایگاه داده) خود از طریق نرم افزار SQL Server Management Studio روی دیتابیس کلیک راست کرده و گزینه New Query را انتخاب نمایید.

 نحوه shrink کردن دیتابیس

سپس جهت مشاهده حجم فایل لاگ می بایست کوئری زیر را اجرا نمایید.(به جای dbname_db از نام دیتابیس موردنظر خود استفاده نمایید)

USE [dbname_db]
GO
SP_HELPFILE

پس از اجرای کوئری و مشاهده نتیجه نام فایل لاگ را کپی نمایید.

shrink  کردن لاگ دیتابیس

حال می بایست اقدام به shrink کردن دیتابیس نمایید.کوئری زیر را اجرا نمایید.

به جای dbname_db از نام دیتابیس موردنظر خود و به جای dbname_db_log نام فایل لاگ را قرار دهید.

ALTER DATABASE "dbname_db"
SET RECOVERY SIMPLE;
GO
DBCC SHRINKFILE ('dbname_db_log', 1);

منتظر بمانید تا کوئری اجرا شده و پیغام زیر را مشاهده کنید.

shrink دیتابیس

تفاوت Shrink Database و Shrink File

 

ویژگیShrink DatabaseShrink File
کنترلکمزیاد
سرعتبیشترکمتر
Fragmentationبالاکمتر
پیشنهاد

مراحل اصولی Shrink بدون آسیب به Performance

برای جلوگیری از افت سرعت، باید مراحل زیر رعایت شود:

مرحله 1: Rebuild Index قبل از Shrink

ALTER INDEX ALL ON TableName REBUILD; 

مرحله 2: اجرای Shrink File

 DBCC SHRINKFILE (FileName, TargetSize);

مرحله 3: Rebuild Index بعد از Shrink

این مرحله بسیار مهم است.

آیا Shrink باعث افزایش سرعت دیتابیس می‌شود؟

خیر، برخلاف تصور رایج، Shrink هیچ تاثیری در افزایش سرعت ندارد. هدف Shrink فقط آزاد کردن فضای دیسک است.

اشتباهات رایج در Shrink

بزرگ‌ترین خطاهایی که باعث افت شدید Performance می‌شوند:

  • اجرای Auto Shrink
  • Shrink روزانه
  • Shrink بدون Rebuild Index
  • Shrink روی دیتابیس فعال

آیا Auto Shrink را فعال کنیم؟

به هیچ عنوان نباید فعال شود. Auto Shrink باعث موارد زیر می شود:

  • کاهش شدید سرعت
  • Fragmentation دائمی
  • افزایش IO سرور

بهترین جایگزین Shrink چیست؟

در بسیاری از موارد بهتر است به جای Shrink:

  • دیتابیس را Archive کنید
  • Partition بندی انجام دهید
  • Log Backup منظم بگیرید

نتیجه‌گیری

Shrink کردن دیتابیس یک ابزار ضروری برای مدیریت فضای دیسک است اما استفاده نادرست از آن می‌تواند باعث کاهش شدید Performance شود.Shrink باید فقط در مواقع ضروری و به روش اصولی انجام شود.

دیدگاه شما کاربران گروه طراحی وب بالسا در طراحی وب سایت در شیراز در مورد این مطلب چیست؟ نظرات خود را با ما به اشتراک بگذارید


به اشتراک بگذارید