27 Mayıs 2009 Çarşamba

Anında Dosya Oluşturulması (Instant File Initialization)

Merhaba arkadaşlar,

Normalde, veritabanınıza ait veri (İng. data) ve kayıt (İng. transaction log) dosyaları, önceden silinmiş olan dosyalardan arta kalan alanların sıfırlarla doldurulmasıyla oluşturulur. Örnek olarak:

- Veritabanı oluşturulması,
- Varolan bir veritabanına veri veya kayıt dosyalarının eklenmesi,
- Varolan bir dosyanın boyutunun büyütülmesi (ki bu otomatik genişleme (İng. autogrowth) özelliğini de içerir),
- Bir veritabanının yedeğinin açılması (İng. restore).

Bununla birlikte, eğer dosyanın yazılacağı alan önceden hiçbir dosya tarafından kullanılmadıysa, o zaman diskino alanında oluşturulacak olan dosyanın sıfırlarla doldurulması gerekmez.

SQL Server' ın Instant File Initialization özelliğini kullandığınızda, dosyanın oluşturulması için sıfırlarla doldurulma işlemine gerek kalmadan veri dosyalarının oluşturulmasını sağlayabilirsiniz. Bu özellik sadece veri dosyaları için geçerlidir, kayıt dosyaları için değil.

Önemli Not: Instant File Initialization özelliği Windows XP Professional, Windows Server 2003 ve üzeri versiyonlar için geçerlidir.

Nasıl Kullanılır?

Bu özelliğin etkin olması için, SQL Server servisi için kullandığınız hesabın Yerel Güvenlik İlkesinde (İng. local group policy) "Birim bakım görevleri gerçekleştir" (İng. perform volume maintenance tasks) ilkesinin bir üyesi olması gerekiyor. Varsayılan olarak ise bu ilkenin tek üyesi Administrators Windows Grubu' dur. Bu bağlamda, bu özelliğin etkin olup olmadığı SQL Server servisi için hangi servis hesabını kullandığınız ile ilintilidir. Eğer SQL Server servisiniz için, sisteminizdeki Administrators Windows Grubu' na üye bir hesabı kullanacaksanız, o zaman Instant File Initialization özelliği zaten etkin olacaktır. Eğer SQL Server servisiniz için Administrators Windows Grubu' na üye olmayan bir hesap kullanmak istiyorsanız (ki doğrusu budur) o zaman o hesabı "Birim bakım görevleri gerçekleştir" ilkesinin bir üyesi yapmanız ve SQL Server servisinizi durdurup yeniden başlatmanız gerekiyor.

Örnek:

Instant File Initialization özelliği etkin değilken aşağıdaki kodu kullanarak oluşturduğum veritabanı tam 12 dakika 37 saniyede oluşturuldu.

CREATE DATABASE [IFI_Test]
ON PRIMARY ( NAME = N'IFI_Test', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\ifi.mdf' , SIZE = 30720000KB , FILEGROWTH = 1024KB )
LOG ON ( NAME = N'IFI_Test_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\ifi_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%) GO

Şimdi, bu oluşturduğumuz test veritabanını silin ve SQL Server' ın Instant File Initialization özelliğini önceden anlattığım şekilde etkinleştirin ve yine yukarıdaki kod ile aynı veritabanını tekrar oluşturun ve hız farkını görün... Instant File Initialization özelliğini etkinleştirdikten sonra aynı veritabanı benim dizüstü bilgisayarımda 3-5 saniyede oluşturuldu. Oldukça farkediyor değil mi?


Ekrem Önsoy

Hiç yorum yok: