در محیطهای دیتابیس بزرگ، مدیریت فضای ذخیرهسازی و بهینهسازی عملکرد از اهمیت بالایی برخوردار است. Filegroupها در SQL Server امکان تفکیک منطقی فایلهای داده، توزیع بار I/O و طراحی استراتژیهای انعطافپذیر Backup/Restore را فراهم میکنند. در این مقاله قدمبهقدم به بررسی مفاهیم، سناریوهای عملی و بهترین روشها میپردازیم.
ساختار و مفاهیم پایه
- هر دیتابیس SQL Server حداقل یک Filegroup به نام PRIMARY دارد که فایلهای MDF و جداول سیستمی را در خود جای میدهد.
- میتوان Filegroupهای کاربری (User-defined) تعریف کرد تا دادهها و ایندکسها در گروههای مجزا نگهداری شوند.
- Filegroup مجموعهای منطقی از فایلهای داده (.mdf و .ndf) است که به صورت یک واحد مدیریت میشوند.
انواع Filegroup
نوع Filegroup | هدف و کاربرد |
---|---|
PRIMARY | فایلهای اصلی و اشیاء سیستمی را در خود نگه میدارد. |
User-defined | نگهداری جداول یا ایندکسهای خاص برای جداسازی بار I/O یا مدیریت فضا. |
Read-only | مناسب برای دادههای آرشیوی که تغییر نمیکنند؛ Backup سبکتر و بازیابی سریعتر. |
مدیریت فیزیکی فایلها
با قرار دادن فایلهای مربوط به Filegroupهای مختلف روی درایوهای فیزیکی مجزا، میتوان بار I/O را بین دیسکها توزیع کرد و کارایی پرسوجوهای موازی را افزایش داد.
- افزایش Throughput با I/O موازی
- کاهش رقابت بر سر Head Disk در درایوهای HDD
- جداسازی فایلهای تراکنشی (LDF) از فایلهای داده
ایجاد و تنظیم Filegroup
تعریف فایل گروپ جدید
ALTER DATABASE AdventureWorksDW
ADD FILEGROUP FG_Archive;
پس از ایجاد Filegroup، باید حداقل یک فایل داده به آن اختصاص دهید.
افزودن فایل به فایل گروپ
ALTER DATABASE AdventureWorksDW
ADD FILE
(
NAME = 'ArchiveData1',
FILENAME = 'E:\SQLData\ArchiveData1.ndf',
SIZE = 1GB,
MAXSIZE = 10GB,
FILEGROWTH = 100MB
)
TO FILEGROUP FG_Archive;
تخصیص اشیاء به Filegroup
- جداول جدید را هنگام ایجاد در Filegroup مشخص کنید:
CREATE TABLE Archive.SalesHistory
(
SaleID int PRIMARY KEY,
SaleDate datetime,
Amount money
)
ON FG_Archive;
- ایندکسهای سنگین را به Filegroup جداگانه منتقل کنید:
CREATE INDEX IX_SalesHistory_Date
ON Archive.SalesHistory(SaleDate)
ON FG_Archive;
- برای جداول پارتیشنشده، Filegroupهای متعددی تعریف کرده و پارتیشنها را روی آنها نگاشت کنید.
مطلب پیشنهادی: مروری تخصصی و جامع بر سرویس SQL Server Browser
مانیتورینگ و گزارشگیری
برای دریافت وضعیت Filegroupها و فضای اشغالشده میتوان از DMVها و سیستم کاتالوگ استفاده کرد:
SELECT fg.name AS FileGroupName,
df.name AS FileName,
df.physical_name,
df.size/128.0 AS CurrentSizeMB,
df.max_size/128.0 AS MaxSizeMB
FROM sys.filegroups fg
JOIN sys.database_files df
ON fg.data_space_id = df.data_space_id;
استراتژیهای Backup و Restore
نوع Backup | توضیحات | کاربرد |
---|---|---|
Full Backup | شامل همه Filegroupها و تراکنشهای ثبتشده تا لحظه Backup. | اصلیترین استراتژی |
Differential Backup | تغییرات نسبت به آخرین Full Backup را ذخیره میکند. | کاهش حجم Backup |
Filegroup-level Backup | فقط Filegroup مشخص را پشتیبان میگیرد. | بازیابی انتخابی |
Partial Backup | ترکیبی از Filegroupهای Read-write و Full Filegroupهای Read-only. | بهینهسازی زمان Restore |
مثال Filegroup-level Backup
BACKUP DATABASE AdventureWorksDW
FILEGROUP = 'FG_Archive'
TO DISK = 'F:\Backups\AW_Archive.bak'
WITH FORMAT;
تبدیل Filegroup به Read-only
برای دادههای آرشیوی که دیگر تغییر نمیکنند، میتوان Filegroup را در حالت Read-only قرار داد. این کار حجم Backup و زمان بازیابی را کاهش میدهد.
ALTER DATABASE AdventureWorksDW
MODIFY FILEGROUP FG_Archive READ_ONLY;
برای بازگشت به حالت Read-write:
ALTER DATABASE AdventureWorksDW
MODIFY FILEGROUP FG_Archive READ_WRITE;
بهترین روشها و نکات کلیدی
- فایلهای پر ترافیک را روی درایوهای SSD جدا قرار دهید.
- Growth خودکار (AUTO GROWTH) را با مقادیر منطقی تنظیم و مانیتور کنید.
- Replication یا Always On را با توجه به Filegroupها تنظیم کنید تا در هر Replica فایلها در گروههای صحیح قرار گیرند.
- برای محیطهای پرمصرف، تعداد Filegroupها و فایلهایشان متناسب با تعداد هارد و کانالهای I/O در نظر گرفته شود.
- فرآیند Filegroup-level Restore را در شرایط واقعی تمرین کنید تا در مواقع بحرانی آشنا باشید.
خطاها و چالشهای رایج
- عدم همگامی بین Filegroupها در نگهداری Replica
- استفاده نامناسب از AUTO GROWTH منجر به Fragmentation میشود
- فضای ناکافی در دیسک مقصد پیش از افزودن فایل جدید
- فراموش کردن مجوزهای دسترسی (Permission) برای مسیرهای فیزیکی
نکات پیشرفته
- استفاده از Partition Switching برای انتقال سریع پارتیشن بین Filegroupها
- بهرهگیری از Backup Compression برای کاهش حجم Backupهای Filegroup-level
- ترکیب FileStream و FileTables داخل Filegroupهای خاص برای ذخیرهسازی اسناد بزرگ
نتیجهگیری
Filegroupها ابزاری قدرتمند برای افزایش کارایی، مدیریت فضای دیتابیس و طراحی استراتژیهای بهینه Backup/Restore در SQL Server هستند. با شناخت دقیق مفاهیم، پیادهسازی ساختار منطقی و رعایت بهترین روشها میتوانید سطح دسترسپذیری و عملکرد دیتابیس خود را به شکل چشمگیری ارتقا دهید.
ارتباط و مشاوره
برای اطلاعات بیشتر و مشاوره میتوانید از طریق زیر با ما در ارتباط باشید:
- تماس ✆ با شرکت لاندا برای مشاوره، اجرا و یا آموزش تخصصی.
- خدمات پایگاهداده لاندا
نظری داده نشده