SQL Server Datenbankwachstum analysieren: Tägliche Größenveränderungen

Während das monatliche Wachstum für langfristige Planung nützlich ist, ermöglicht die tägliche Analyse des Datenbankwachstums die frühzeitige Erkennung von Anomalien – plötzliche Wachstumsspitzen weisen oft auf Datenbankprobleme oder unerwartete Datenzuflüsse hin.

Tägliches Wachstum aus dem Default Trace

-- Default Trace-Pfad ermitteln
DECLARE @TracePath NVARCHAR(500);
SELECT @TracePath = path FROM sys.traces WHERE is_default = 1;

-- Tägliche Auto-Growth-Events
SELECT
    CAST(StartTime AS DATE) AS growth_date,
    DatabaseName,
    FileName,
    SUM(IntegerData * 8.0 / 1024) AS total_growth_mb,
    COUNT(*) AS growth_count
FROM fn_trace_gettable(@TracePath, DEFAULT)
WHERE EventClass IN (92, 93)  -- Data File Auto Grow / Log File Auto Grow
GROUP BY CAST(StartTime AS DATE), DatabaseName, FileName
ORDER BY growth_date DESC, total_growth_mb DESC;

Häufiges Auto-Growth: Ein Warnsignal

Wenn eine Datenbank täglich mehrfach automatisch wächst, gibt es ein Problem: Entweder ist die Ausgangsgröße zu klein konfiguriert, oder es gibt einen unerwarteten Datenzufluss. Die Lösung: Pre-wachstum auf die erwartete Größe und/oder Analyse des Datenzuwachses.

Optimale Wachstums-Konfiguration

-- Datenbankdateien auf feste Wachstumsgröße setzen (keine %-basiert)
ALTER DATABASE MyDatabase
MODIFY FILE (
    NAME = N'MyDatabase',
    FILEGROWTH = 512MB  -- Statt 10% - verhindert viele kleine Wachstumsschritte
);

ALTER DATABASE MyDatabase
MODIFY FILE (
    NAME = N'MyDatabase_log',
    FILEGROWTH = 256MB
);

Tägliche Wachstumsberichte, kombiniert mit einem Alert bei überdurchschnittlichem Wachstum, sind ein wichtiger Bestandteil proaktiven SQL Server-Managements. Der Default Trace ist dabei die erste und einfachste Datenquelle.