"

راه‌های افزایش سرعت Backup & Restore در SQL Server ,تکنیک‌های سخت‌افزاری و ساختاری  افزایش سرعت Backup & Restore,پارامترهای پیشرفته برای افزایش سرعت در SQL

راه‌های افزایش سرعت Backup & Restore در SQL Server

فشرده‌سازی،چند فایل موازی روی دیسک‌های جدا،تنظیم BUFFERCOUNT و MAXTRANSFERSIZE، استفاده از SSD و بازسازی ایندکس‌ها قبل از بکاب

تیم تحریریه
3
0
08 خرداد 1405
لینک کوتاه

راه‌های افزایش سرعت Backup & Restore در SQL Server

در SQL Server، افزایش سرعت عملیات پشتیبان‌گیری (Backup) و بازیابی (Restore) با ترکیبی از روش‌های نرم‌افزاری و سخت‌افزاری امکان‌پذیر است.
از مهم‌ترین راهکارها می‌توان به فعال‌سازی فشرده‌سازی (COMPRESSION) اشاره کرد که حجم فایل را تا ۷۰٪ کاهش داده و زمان نوشتن روی دیسک را کم می‌کند.
همچنین استفاده از چندین فایل پشتیبان موازی (Striping) روی دیسک‌های فیزیکی جداگانه، تنظیم پارامترهای BUFFERCOUNT و MAXTRANSFERSIZE برای بهینه‌سازی حافظه و I/O، و تعیین MAXDOP برای استفاده از چند هسته پردازشی، تأثیر چشمگیری در کاهش زمان دارند.
در سطح سخت‌افزاری، جداسازی فایل‌های دیتابیس از فایل‌های پشتیبان روی دیسک‌های متفاوت (ترجیحاً SSD) و بازسازی ایندکس‌های پراکنده قبل از پشتیبان‌گیری نیز سرعت را بهبود می‌بخشد

راه‌های افزایش سرعت Backup & Restore در SQL Server



اصول اولیه و انتخاب نوع پشتیبان‌گیری مناسب

اولین و مهم‌ترین گام برای بهینه‌سازی سرعت، انتخاب نوع مناسب پشتیبان‌گیری است:
  • Full Backup (پشتیبان کامل): کل دیتابیس را پشتیبانی می‌کند. زمان بیشتری می‌برد اما پایه و اساس سایر پشتیبان‌هاست.
  • Differential Backup (پشتیبان تفاضلی): فقط تغییرات از آخرین پشتیبان کامل را ذخیره می‌کند. حجم کمتر و سرعت بالاتر.
  • Transaction Log Backup (پشتیبان لاگ تراکنش): کوچک‌ترین حجم را دارد و برای بازیابی نقطه‌زمانی (Point-in-Time) ضروری است.
💡 نکته طلایی: برای دیتابیس‌های حجیم (چند ترابایتی)، ترکیب پشتیبان کامل هفتگی + پشتیبان تفاضلی روزانه + پشتیبان لاگ هر ۱۵ دقیقه، بهترین تعادل بین سرعت و امنیت را فراهم می‌کند.



🌟 آیا می‌خواهید به یک متخصص پایگاه داده تبدیل شوید و در دنیای فناوری اطلاعات بدرخشید؟

با دوره آموزشی SQL Server ما، شما می‌توانید به راحتی و با روشی عملی، تمام مهارت‌های لازم را یاد بگیرید!

این دوره به شما آموزش می‌دهد که چگونه داده‌ها را به بهترین شکل مدیریت کنید، گزارش‌های قدرتمند بسازید و به تحلیل‌های عمیق دست یابید.

با محتوای جذاب و پروژه‌های واقعی، شما نه تنها تئوری را یاد می‌گیرید، بلکه توانایی‌های عملی خود را نیز تقویت می‌کنید.

پس فرصت را از دست ندهید! همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آینده شغلی روشن‌تر بردارید!

 همین حالا شروع کنید و به دنیای داده‌ها بپیوندید!






فشرده‌سازی (Compression) – کلید طلایی افزایش سرعت

چگونه فشرده‌سازی سرعت را افزایش می‌دهد؟

از SQL Server 2008 به بعد، قابلیت فشرده‌سازی بومی پشتیبان‌ها اضافه شده است.
فشرده‌سازی حجم فایل نهایی را تا ۷۰-۸۰٪ کاهش می‌دهد که مستقیماً به معنای:
  • کاهش زمان نوشتن روی دیسک
  • کاهش زمان انتقال از طریق شبکه
  • کاهش فضای ذخیره‌سازی

پیاده‌سازی فشرده‌سازی


-- پشتیبان فشرده
BACKUP DATABASE MyDatabase
TO DISK = 'D:\Backups\MyDatabase_compressed.bak'
WITH COMPRESSION;

-- پشتیبان بدون فشرده‌سازی (پیش‌فرض)
BACKUP DATABASE MyDatabase
TO DISK = 'D:\Backups\MyDatabase_normal.bak'
WITH NO_COMPRESSION;

نکته مهم: Trace Flag 3042 برای بهینه‌سازی فضا

SQL Server به طور پیش‌فرض هنگام فشرده‌سازی، فایل را بزرگ‌تر از نیاز واقعی پیش‌تخصیص می‌دهد تا افت عملکرد رخ ندهد.
اگر محدودیت فضای ذخیره‌سازی دارید و افت جزئی سرعت (حدود ۵٪) برایتان قابل قبول است، از Trace Flag 3042 استفاده کنید:


DBCC TRACEON(3042, -1);
BACKUP DATABASE MyDatabase TO DISK = 'D:\Backup.bak' WITH COMPRESSION;

این پرچم باعث می‌شود فایل فقط به اندازه نیاز واقعی رشد کند و فضای کمتری اشغال شود.

پارامترهای پیشرفته برای افزایش سرعت در SQL

1. پارامتر BUFFERCOUNT و MAXTRANSFERSIZE

این دو پارامتر تأثیر مستقیمی بر مصرف حافظه و سرعت عملیات I/O دارند:

-- مثال پشتیبان با تنظیمات بهینه برای دیتابیس بزرگ
BACKUP DATABASE MyDatabase
TO DISK = 'D:\Backup.bak'
WITH COMPRESSION,
     MAXTRANSFERSIZE = 4194304,  -- 4MB
     BUFFERCOUNT = 1024;          -- تعداد بافرها

توضیح پارامترها
  • MAXTRANSFERSIZE: اندازه هر بافر (پیش‌فرض ۱ مگابایت). افزایش به ۴ یا ۸ مگابایت می‌تواند throughput را بهبود بخشد.
  • BUFFERCOUNT: تعداد بافرهای همزمان. مقدار مناسب = تعداد هسته‌های CPU × (۳ تا ۵)

فرمول محاسبه حافظه مصرفی:

Memory ≈ BUFFERCOUNT × MAXTRANSFERSIZE


مثال عملی: با BUFFERCOUNT=100 و MAXTRANSFERSIZE=20MB، حافظه مصرفی حدود ۲ گیگابایت خواهد بود.

2. افزایش موازی‌سازی با MAXDOP


BACKUP DATABASE MyDatabase
TO DISK = 'D:\Backup.bak'
WITH COMPRESSION,
     MAXDOP = 4;  -- استفاده از ۴ هسته CPU

پارامتر MAXDOP تعیین می‌کند از چند هسته پردازشی برای فشرده‌سازی استفاده شود.

تکنیک‌های سخت‌افزاری و ساختاری  افزایش سرعت Backup & Restore

  •  استفاده از چندین فایل پشتیبان (Striping)

تقسیم پشتیبان به چندین فایل موازی، سرعت را به شدت افزایش می‌دهد:

-- پشتیبان با ۴ فایل موازی
BACKUP DATABASE MyDatabase
TO 
    DISK = 'D:\Backup1.bak',
    DISK = 'D:\Backup2.bak',
    DISK = 'E:\Backup3.bak',
    DISK = 'F:\Backup4.bak'
WITH COMPRESSION;

📌 نکته حیاتی: فایل‌ها را روی دیسک‌های فیزیکی جداگانه قرار دهید تا از I/O موازی واقعی بهره‌مند شوید.
  • جداسازی دیسک‌ها از هم

    • قانون طلایی: فایل‌های دیتابیس و فایل‌های پشتیبان را روی دیسک‌های متفاوت قرار دهید.
    • بهترین حالت: سه دیسک جداگانه برای Data Files، Log Files و Backup Files.
  • استفاده از SSD به جای HDD

SSDها سرعت خواندن/نوشتن بسیار بالاتری دارند و زمان پشتیبان‌گیری را تا ۵۰٪ کاهش می‌دهند.



تکنیک‌های سخت‌افزاری و ساختاری  افزایش سرعت Backup & Restore


بهینه‌سازی بازیابی (Restore) 

  • تکنیک‌های افزایش سرعت Restore

    همان پارامترهایی که برای Backup استفاده می‌شوند، برای Restore نیز کاربرد دارند:
-- بازیابی با حداکثر سرعت
RESTORE DATABASE MyDatabase
FROM DISK = 'D:\Backup.bak'
WITH REPLACE,
     STATS = 5,
     MAXTRANSFERSIZE = 4194304,
     BUFFERCOUNT = 1024;



  • بازیابی نقطه‌زمانی (Point-in-Time Recovery)

    اگر نیاز به بازیابی دقیق تا لحظه مشخصی دارید، از قابلیت STOPAT استفاده کنید:
-- مرحله ۱: بازیابی کامل
RESTORE DATABASE MyDatabase
FROM DISK = 'D:\FullBackup.bak'
WITH NORECOVERY;

-- مرحله ۲: بازیابی تفاضلی (در صورت وجود)
RESTORE DATABASE MyDatabase
FROM DISK = 'D:\DiffBackup.bak'
WITH NORECOVERY;

-- مرحله ۳: بازیابی لاگ‌ها تا زمان دقیق
RESTORE LOG MyDatabase
FROM DISK = 'D:\LogBackup.trn'
WITH RECOVERY, 
     STOPAT = '2026-05-28T14:30:00';



⏰ نکته مهم: در بازیابی نقطه‌زمانی، ترتیب لاگ‌ها باید کاملاً رعایت شود و هیچ لاگی نباید جا بیفتد.

  •  استفاده از تابع fn_dump_dblog برای بررسی محتوای لاگ

    در شرایط بحرانی که پشتیبان کامل در دسترس نیست، می‌توان با استفاده از تابع undocumented fn_dump_dblog محتوای فایل لاگ را مستقیماً خواند:

SELECT * 
FROM fn_dump_dblog(
    NULL, NULL, N'DISK', 1, 
    N'D:\LogBackup.trn',
    DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
    DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
    -- پارامترهای اضافی (کل ۶۰ پارامتر DEFAULT)
);

⚠️ هشدار: این تابع پشتیبانی رسمی ندارد و فقط در شرایط اضطراری استفاده شود.

نکات تکمیلی و ترفندهای حرفه‌ای برای افزایش سرعت

  • بهینه‌سازی ایندکس‌ها قبل از پشتیبان‌گیری

    قبل از پشتیبان‌گیری، ایندکس‌های پراکنده (Fragmented) را بازسازی کنید تا حجم پشتیبان کاهش یابد:

-- بازسازی تمام ایندکس‌های دیتابیس
ALTER INDEX ALL ON dbo.YourTable REBUILD;


  • پاکسازی خودکار فایل‌های قدیمی

    برای جلوگیری از اتلاف زمان در خواندن هدر فایل‌های زیاد، پشتیبان‌ها را در پوشه‌های مجزا بر اساس نام دیتابیس و نوع پشتیبان ذخیره کنید.

  • مانیتورینگ و ارزیابی عملکرد

    همواره زمان پشتیبان‌گیری را با STATS مانیتور کنید:
BACKUP DATABASE MyDatabase
TO DISK = 'D:\Backup.bak'
WITH STATS = 10;  -- نمایش پیشرفت هر ۱۰٪



نکات تکمیلی و ترفندهای حرفه‌ای برای افزایش سرعت



نتیجه‌گیری و جمع‌بندی

برای افزایش سرعت Backup و Restore در SQL Server، این راهکارها را به ترتیب اولویت پیاده‌سازی کنید:

اولویت     راهکار     تأثیر بر سرعت     تأثیر بر CPU
۱     فشرده‌سازی (COMPRESSION)   +++     ++
۲  جداسازی دیسک‌ها       +++      -
۳  Striping (چند فایل موازی)   ++    +
۴ تنظیم BUFFERCOUNT/MAXTRANSFERSIZE ++  +
۵     استفاده از SSD   ++   -
۶  بهینه‌سازی ایندکس‌ها      +      +

فرمول نهایی برای حداکثر سرعت:

BACKUP DATABASE MyDatabase
TO 
    DISK = 'D:\Backup1.bak',
    DISK = 'E:\Backup2.bak',
    DISK = 'F:\Backup3.bak'
WITH COMPRESSION,
     MAXTRANSFERSIZE = 4194304,
     BUFFERCOUNT = 1024,
     STATS = 5,
     MAXDOP = 4;

همیشه به یاد داشته باشید: سریع‌ترین بازیابی، بازیابی است که هرگز به آن نیاز پیدا نکنید – اما اگر نیاز شد، باید در کمترین زمان ممکن انجام شود.
ترکیب راهکارهای سخت‌افزاری، نرم‌افزاری و تنظیمات دقیق، شما را به این هدف می‌رساند.

محصولات مرتبط

کاربران ما

شما هم نظرتون با ما دریاره “راه‌های افزایش سرعت Backup & Restore در SQL Server” اشتراک بزارید

برای ارسال نظر لطفا ورود یا ثبت نام کنید

منو