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