Makale Özeti

Filegroups (Dosya Grupları), özetle bir dosyalar koleksiyonudur. SQL Server 2000, varsayılan bir filegroup ile birlikte gelir; fakat eğer istenirse, veritabanı yaratma esnasında veya veritabanı düzenleme esnasında ilave filegrouplar da tasarlanabilir.

Makale

SQL SERVER 2000 ve Filegroups

Filegroups (Dosya Grupları), özetle bir dosyalar koleksiyonudur. SQL Server 2000, varsayılan bir filegroup ile birlikte gelir; fakat eğer istenirse, veritabanı yaratma esnasında veya veritabanı düzenleme esnasında ilave filegrouplar da tasarlanabilir. (CREATE DATABASE – ALTER DATABASE)

Her veritabanı için maksimum 256 filegroup tanımlanabilir. Filegrouplar sadece veri dosyaları içerebilirler. Transaction log dosyaları filegroupların bir parçası olamaz. Bir dosya, birden çok filegroup un üyesi olamaz. Tablolar, indexler ve text, ntext ve image veri türleri, spesifik bir filegroup ile ilişkilendirilebilir.

Filegrouplar ile belirli bir obje, belirli bir dosyaya yerleştirilebilir. Aşağıdaki resim, örnek veritabanımız Northwind kullanılarak filegroupları anlatmamıza yardımcı olabilir. Burada OrdHist1.ndf ve OrdHist2.ndf dosyaları ayrı bir diskte saklanmıştır. Bu şekilde bir tasarım, çok sık sorgulanan tablolarda, disk sürücülerinin daha sağlıklı bir şekilde çalışması bakımından önemli bir rol oynamaktadır.

Aynı zamanda, sistem yöneticileri bu özellik sayesinde tüm bir veritabanı ile uğraşmak yerine, tek tek dosyaları yedekleyebilir veya yedeğini aldığı dosyaları geri yükleyebilirler. 

                                        

Filegroup kullanımı ileri düzey bir veritabanı tasarım tekniğidir. Spesifik filegrouplar üzerinde tablolar ve indexler yaratmayı belirlemek için öncelikle veritabanı yapınızı, verilerinizi, transactionlarınızı (hareketler) ve sorgularınızı iyi anlamalısınız.

SQL Server 2000 bize iki çeşit filegroup sunar:

  • Primary Filegroup (Primary veri dosyasında system tablolarını içerir)
  • Kullanıcı tanımlı filegrouplar (Kullanıcı tarafından FILEGROUP kelimesi ile özellikleri tanımlanır)

Aşağıda örnek bir veritabanı tasarımı ve bununla birlikte filegroup kavramının nasıl kullanıldığını gösteren SQL komutlarını görebiliriz.

CREATE Database mydatabase

on Primary

(name=my_Db1,

FileName='C:\Proje\mydb\D\my_Db1.mdf',

SIZE=20MB,

MaxSize=Unlimited,

FileGrowth=20%),

(name=my_Db2,

FileName='C:\Proje\mydb\D\my_Db2.ndf',

SIZE=20MB,

MaxSize=Unlimited,

FileGrowth=20%),

FileGroup Group2   /* Burada Group2 adında bir filegroup tanımlanıyor ve Group2 üzerinde my_Db3 ve my_Db4 isimli dosyalar oluşturuluyor…*/

(name=my_Db3,

FileName='C:\Proje\mydb\E\mydb_db3.ndf',

SIZE=10MB,

MaxSize=Unlimited,

FileGrowth=10%),

(name=my_Db4,

FileName='C:\Proje\mydb\E\mydb_db4.ndf',

SIZE=10MB,

MaxSize=Unlimited,

FileGrowth=10%),

FileGroup Group3   /* Burada Group3 adında bir filegroup tanımlanıyor ve Group3 üzerinde my_Db5 isimli dosya oluşturuluyor…*/

(name=my_Db5,

FileName='C:\Proje\mydb\F\mydb_db5.ndf',

SIZE=10MB,

MaxSize=Unlimited,

FileGrowth=10%),

FileGroup Group4   (name=my_Db6,

FileName='C:\Proje\mydb\G\mydb_db6.ndf',

SIZE=10MB,

MaxSize=Unlimited,

FileGrowth=10%),

FileGroup Group5   (name=my_Db7,

FileName='C:\Proje\mydb\H\my_db7.ndf',

SIZE=10MB,

MaxSize=Unlimited,

FileGrowth=10%),

(name=my_Db8,

FileName='C:\Proje\mydb\H\my_db8.ndf',

SIZE=10MB,

MaxSize=Unlimited,

FileGrowth=10%)

LOG on

(name=mydb_Log1,

FileName='C:\Proje\mydb\I\my_Log1.ldf',

SIZE=5MB,

MaxSize=Unlimited,

Filegrowth=1MB),

(name=mydb_Log2,

FileName='C:\Proje\mydb\I\mydb_Log2.ldf',

SIZE=5MB,

MaxSize=Unlimited,

Filegrowth=1MB)

Collate Sql_Latin1_General_CP1_CI_AS  

 

Aşağıdaki örnek kodlar ise var olan veritabanımız Northwind üzerine kullanıcı tanımlı bir filegroup eklemekte ve bu filegroupa ikinci bir veri dosyası eklemektedir.

Alter Database Northwind

Add Filegroup OrderHistoryGroup

GO

Alter Database Northwind

Add File

(Name=’OrdHistYear1’,

Filename=’c:\programfiles\microsoft sql server\mssql\data\ordhist1.ndf’,

Size=5mb),

To Filegroup OrderHistoryGroup

GO

Filegroup bilgilerini görüntülemek için FILE_NAME, FILE_ID, FILE_PROPERTY, FILEGROUP_NAME, FILEGROUP_ID ve FILEGROUP_PROPERTY gibi fonksiyonlar kullanılabilir.   

Kaynaklar: MOC2073A, SQL Server 2000 Books Online