آموزش پیشرفته SQL Server (جلسه دوم) - آشنایی با FileGroup

آشنایی با FileGroup، قسمتی از آموزش پیشرفته SQL Server است، پیشنهاد می شود قبل از مطالعه ی آشنایی با FileGroup، قسمت های قبلی را مطالعه فرمایید.


FileGroup چیست؟

هدف: دسته بندی DataFile های بانک اطلاعاتی می باشد.

FileGroup برای LogFile قابل استفاده نیست و کارایی آن صرفا مربوط به DataFile ها می باشد.


انواع FileGroup:

FileGroup ها به سه دسته زیر تقسیم می شوند:

آشنایی با FileGroup

    1.  Data File Group
      1. Primary File Group:
        • پیش فرض SQL Server بوده و برای DataFile ها ایجاد می شوند.
        • محل قرار گیری جداول سیستمی است.
        • وجود آن ضروری می باشد.
        • برای مشاهده این نوع File Group کافیست بر روی بانک اطلاعاتی کلیلک راست کرده و properties را انتخاب نمایید:آشنایی با FileGroup
        • برای مشاهده اشیاء سیستمی موجود در Primary File Group می توان از دستور زیر استفاده نمود:

          آشنایی با FileGroup

          --قرار دارند Primary File Group اشیاء سیستمی در
          SELECT * FROM SYS.objects S
          WHERE S.type_desc IN ('SYSTEM_TABLE','INTERNAL_TABLE','SERVICE_QUEUE')
          GO
      2. User Defined File Group:
        • توسط کاربر تعریف می شوند.
        • برای ذخیره جداول و ایندکس ها مورد استفاده قرار می گیرند.
    2. File Stream File Group
      • برای ذخیره Unstructured Data خارج از پایگاه داده بکار می روند.

آشنایی با FileGroup

                   3.    Memory Optimized Data

    • مختص SQL Server 2014 می باشد.
    • معماری آن شبیه به File Stream می باشد.

رعایت چند نکته دراستفاده از File Group

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

  1. پخش شدن داده ها مابین DataFile ها: تمامی داده ها با کمک الگوریتم RoundRobin (نوبت گردشی) و با درصدهای مساوی بین DataFileهای موجود در یک File Group تقسیم می شوند.
  2. رشد DataFile ها: تا تمامی DataFile های موجود در یک File Group پر نشوند Growing اتفاق نمی افتد.
  3. امکان قرار دادن جداول در File Group ها

دلایل استفاده از File Group ها

  1.  جدا کردن جداول از یکدیگر

          به منظور کم نمودن زمان اجرای پرس و جوها و تعدیل عملیات IO بهتر است جداول مربوط به هر سیستم از یکدیگر جدا شوند.

آشنایی با FileGroup

      2.   جدا کردن NonClustered Index ها

        به دلیل اینکه NonClustered Index ها در فایلهای جداگانه نگهداری می شوند می توان برای بالا بردن کارایی پایگاه داده نسبت به جدا نمودن آنها اقدام نمود. به عنوان یک مثال عملی موارد زیر را انجام دهید:

  • ابتدا با کمک دستورات زیر یک بانک اطلاعاتی که برای جداول آن و ایندکس های آن FileGroup جداگانه تعریف شده ایجاد نمایید.

    آشنایی با FileGroup

    CREATE DATABASE Test01 
    	ON  PRIMARY
    	(
    		NAME=Test01_Primary,FILENAME='D:\Database\Test01_Primary.mdf'
    	),
    	FILEGROUP FG_Stock
    	(
    		NAME=Data_Stock,FILENAME='D:\Database\Data_Stock.ndf'
    	),
    	FILEGROUP FG_Index
    	(
    		NAME=Data_Index,FILENAME='D:\Database\Data_Index.ndf'
    	)
    	LOG ON
    	(
    		NAME=TEST01_log1,FILENAME='D:\Database\TEST01_log1.LDF'
    	)
  • در ادامه ابتدا جدولی را بر روی FileGroup جداول ایجاد نموده و پس از آن یک ایندکس از نوع NonClustered بر روی FileGroup مربوط به ایندکس ها ایجاد کنید.

    آشنایی با FileGroup

    CREATE TABLE Stock_Table
    (
    	ID INT PRIMARY KEY,
    	Info1 CHAR(7000) DEFAULT 'Stock_Table_Test',
    	Info2 CHAR(500)
    ) ON FG_Stock
    GO
    --ایجاد ایندکس جدول
    CREATE NONCLUSTERED INDEX IX01 ON 
    	Stock_Table (Info2) ON FG_Index
    GO

3.   پارتیشن بندی جداول: تقسیم بندی جداول در ساختارهای ذخیره سازی جداگانه

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

5.   جدا کردن داده های LOB: با جدا نمودن Large Object ها از سایر داده ها با کمک FileGroup باعث بهبود کارایی پایگاه داده خواهیم شد.

6.    ReadOnly نمودن بخش خاصی از پایگاه داده: اینکار را با استفاده از دستور زیر می توان انجام داد:

آشنایی با FileGroup

ALTER DATABASE Test01 MODIFY FILEGROUP FG_ReadOnlyData READONLY WITH ROLLBACK IMMEDIATE
GO

7.   تهیه پشتیبان از بخش خاصی از پایگاه داده: با اینکار هم حجم فایل پشتیبان کمتر می شود و هم مدت زمان کمتری برای گرفتن پشتیبان صرف می شود. برای اینکار کافیست دستور زیر را اجرا نمایید:

آشنایی با FileGroup

BACKUP DATABASE DB_Name FILEGROUP = 'FG_Name' 
	TO  DISK = 'Destination File' WITH STATS=1
GO

در ادامه بحث آشنایی با FileGroup خواهید دید...!

1-آشنایی کامل انواع FileGroup 

2- آموزش جامع نحوه جداسازی جداول بانک اطلاعاتی با استفاده از FileGroup همراه با مثال

3-آموزش جامع نحوه جداسازی ایندکس ها از جداول بانک اطلاعاتی با استفاده از FileGroup همراه با مثال

4-آموزش جامع نحوه جداسازی LOB ها با استفاده از FileGroup همراه با مثال

5-آموزش جامع نحوه ReadOnly کردن FileGroup همراه با مثال

 6-آموزش جامع نحوه گرفتن پشتیبان از یک FileGroup همراه با مثال


دسترسی به موارد آموزشی بالا در بسته خریداری شده

  • شماره جلسه: 2
  • نام فایل ویدئو: 02
  • فرمت فایل: mp4.

نقطه شروع بحث بالا (آشنایی با File Group) در ویدئو:  14:50


برای خرید و دانلود کاملآموزش پیشرفته SQL Server کلیک کنید.

READ MORE