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 diskin o 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