راههای افزایش سرعت Backup & Restore در SQL Server
فشردهسازی،چند فایل موازی روی دیسکهای جدا،تنظیم BUFFERCOUNT و MAXTRANSFERSIZE، استفاده از SSD و بازسازی ایندکسها قبل از بکاب
راههای افزایش سرعت Backup & Restore در SQL Server
در SQL Server، افزایش سرعت عملیات پشتیبانگیری (Backup) و بازیابی (Restore) با ترکیبی از روشهای نرمافزاری و سختافزاری امکانپذیر است.از مهمترین راهکارها میتوان به فعالسازی فشردهسازی (COMPRESSION) اشاره کرد که حجم فایل را تا ۷۰٪ کاهش داده و زمان نوشتن روی دیسک را کم میکند.
همچنین استفاده از چندین فایل پشتیبان موازی (Striping) روی دیسکهای فیزیکی جداگانه، تنظیم پارامترهای BUFFERCOUNT و MAXTRANSFERSIZE برای بهینهسازی حافظه و I/O، و تعیین MAXDOP برای استفاده از چند هسته پردازشی، تأثیر چشمگیری در کاهش زمان دارند.
در سطح سختافزاری، جداسازی فایلهای دیتابیس از فایلهای پشتیبان روی دیسکهای متفاوت (ترجیحاً SSD) و بازسازی ایندکسهای پراکنده قبل از پشتیبانگیری نیز سرعت را بهبود میبخشد
اصول اولیه و انتخاب نوع پشتیبانگیری مناسب
اولین و مهمترین گام برای بهینهسازی سرعت، انتخاب نوع مناسب پشتیبانگیری است:- 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;
-
جداسازی دیسکها از هم
- قانون طلایی: فایلهای دیتابیس و فایلهای پشتیبان را روی دیسکهای متفاوت قرار دهید.
- بهترین حالت: سه دیسک جداگانه برای Data Files، Log Files و Backup Files.
-
استفاده از SSD به جای HDD

بهینهسازی بازیابی (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” اشتراک بزارید
برای ارسال نظر لطفا ورود یا ثبت نام کنید