SQL Server VLF Nedir ?

SQL Server üzerinde yer alan veritabanlarının .ldf uzantılı fiziksel log dosyalarının içerisinde yer alan sanal log dosyalarıdır. Fiziksel log dosyaları veritabanı sistemi tarafından iç transaction yönetimi için birden fazla mantıksal dosyalara bölümlendirilir. Sistem üzerinden bu dosyaların sayısı arttıkça özellikle sistemin yeniden açılma durumlarında o veritabanının toparlanma süresi (recovery time)  uzadığı gibi log dosyasına ihtiyaç duyuldukça performans azalır.

Bu tarz veritabanlarını tekrar restart ettiğimizde toparlanma süreleri uzun sürmektedir. Veritabanının Log dosyasının AutoGrowth u ve ınitial Size ‘ı uygun SET edilmedi ise VLF sayısı çok fazla olur ve beraberinde performans probleminide getirir.

Bu nasıl performans problemine neden olur diyor iseniz , bir tanesine örnek yukarıda vermiştik. Bunun dışında Log Backup alımınının uzaması. Insert,Update,Delete sürelerinin artması gibi durumlara sebebiyet verecektir.

DBCC LOGINFO() komutu ile veritabanı üzerinde ne kadar VLF var bilgisine erişebiliriz. Bu değeri düşürmek için ise sık sık Transaction Log Backup almalıyız. Veya Log File ‘ını belirlie periyotlarla Shrink etmeliyiz.

Örneğin :

SQL_TR_REP adında bir veritabanımız mevcut ve buun üzerinde ki VLF sayısına bakıyoruz.

USE SQL_TR_REP
GO
DBCC LOGINFO()

Görüldüğü üzere 58 adet VLF bulunmaktadır. bunu düşürmek için Log shrink yöntemini deneyelim ;

USE [SQL_TR_REP]
GO
DBCC SHRINKFILE (N'SQL_TR_REP_log' , 0, TRUNCATEONLY)
GO

Tekrar Shrink ten sonra VLF sayısına baktığımız da aşağıda ki gibi 4 adet VLF olduğunu görmekteyiz.

Kolay Gelsin.

Leave a Reply

Your email address will not be published. Required fields are marked *