Bu yazımda sık karşılaştığım sql transaction log dosyasının varlığını, aşırı büyümesinin nedenlerini ve çözüm yollarını irdeleyeceğim.
Transaction Log, adı üzerinde, SQL tarafında yapılan tüm işemlerin ( sorgu, ekleme, çıkarma, düzenleme) kaydının tutulduğu bir veritabanıdır.
Aşağıda içeriğini verdiğim parçalardan oluşur.
SQL üzerinde işlem yapıldıkça bu log dosyası da büyüyecektir.
Buradan bakıldığında performansı da oldukça etkileyen bir sistemin parçasıdır.
Peki Neden Büyür ?
Veritabanı kurtarma modelinize bağlı olarak işlem kayıtları otomatik olarak kesilir ya da tam yedek aldığınız zamana dek saklanır, böyle durumda da büyümesi kaçınılmaz olur.
Yani, full recovery mode bir db kullanıyorsanız ve düzenli yedek almıyorsanız bu loglar silinmeden saklanır ve haliyle LDF dosya boyutunuz büyür.
Bu durumda log dosyasını küçültme ( shrink ) işlemi yapmak gerekir.
Log Shrink Nasıl Yapılır ?
Öncelikle kurtarma modelimizi Simple Recovery Modele Alıyoruz: Bunun anlamı şudur, Simple Recovery Mode’da Log dosyalarının boyutları default ayarlanmış boyuta göre küçültülür.
Sql Studio açın ve veritabanı üzerine sağ tıklayarak “new query” diyerek sorgu penceresini açın.
1. Adım :
USE DatabaseName
ALTER DATABASE DatabaseName
SET RECOVERY SIMPLE
GO
2. Adım :
Bu adımda log dosyalarımızın boyutunu istediğimiz şekilde ayarlayabiliyoruz. Bu örnekte 500 MB olarak ayarlıyoruz. ( rakam MB cinsinden ayarlanır )
USE DatabaseName
DBCC SHRINKFILE (DatabaseName_Log, 500)
GO
3. Adım :
Bu adımda tekrar log dosyamızı Full Recovery Mode’a çekerek, log dosyamızın otomatik olarak kesilmesininin önüne geçiyoruz.
USE DatabaseName
ALTER DATABASE DatabaseName
SET RECOVERY FULL
GO
- Kırmızı ile yazılmış kısımları kendinize göre düzenleyin.
- DatabaseName_Log, log dosyanızın ismi ile aynı olmalıdır.
- Sorgu penceresine yalnızca USE ile başlayan sorgu metinleri yazılmalıdır.
- Düzenli SQL yedek almayı lütfen alışkanlık haline getirin.
Teşekkürler komutları gerçekleştirdim çok eski sunucuda LDF 6GB boyuta ulaşmış şimdi güvenli bir şekilde 500MB a düştü.