Virtual Log Files dokumentieren

In meinem letzten Beitrag hatte ich etwas zu den Auswirkungen von Virtual Log Files auf die Performance geschrieben. Heute geht es darum, die Eckdaten der Virtual Log Files zu analysieren und zu dokumentieren.

Daten sammeln

Zuerst werden wir die Daten mittels der nicht dokumentieren DBCC Option LOGINFO sammeln und für zukünftige Auswertungen historisieren. Auf nicht dokumentierte Funktionen sollte man keine systemkritischen Vorgänge aufbauen, daher hier noch einmal die Warnung, dieses Feature nicht zu intensiv zu nutzen. Es kann jederzeit aus dem Funktionsumfang des SQL Server verschwinden.

Im Anhang findet sich ein Skript, welches die Tabellen anlegt, die wir für die Sammlung und Archivierung der Daten benötigen. Bei mir hat es sich als hilfreich erwiesen für viele selbst geschriebene Tools eine eigene Datenbank zur Unterstützung der Administration anzulegen. Wir nennen diese Datenbank einfach mal "AdminTools".

Nachdem die Tabellen in der Datenbank angelegt wurden, fehlt noch die Prozedur, welche mittels Cursor durch alle vorhandenen Datenbanken geht und die Informationen sammelt. Nach der Analyse einer Datenbank werden die Eckdaten der Virtual Log Files in der Archiv-Tabelle abgelegt.

Der Aufruf dieser Prozedur kann manuell oder regelmässig per Job ausgeführt werden, wobei ich hier höchstens zu monatlichen Sammlungen tendiere.

Daten auswerten

Nun können wir zum einen den letzten Lauf anzeigen lassen, oder für eine spezielle Datenbank die Historie. Ergänzt werden die Informationen durch die aktuellen Einstellungen zu dem Transaktionsprotokoll der Datenbanken.

Damit wir auch noch Informationen über die historischen Einstellungen haben, berechnen wir, wie das Inkrement des Transaktionslogs (für die kleinsten und größten VLFs) wahrscheinlich ausgesehen hat und aus der Anzahl der VLFs und der durchschnittlichen Größe können wir jederzeit wieder (ausreichend genau) auf die damalige Größe schließen.

Ergänzungsmöglichkeit

Wer mag, kann sich zwei Reports über diese beiden Datasets basteln und den zweiten per Hyperlink für eine einzelne Datenbank aufrufen.

  VLF_Tabellen_anlegen.sql
  usp_DB_VLFs_Scan.sql
  VLF_Tabellen_Auswerten.sql