Die Punkte von Thomas Stringer sind alles, was Sie für Ihre Antwort benötigen. Aber ich würde noch einen Einblick geben, wie Sie Ihre Einstellungen für das automatische Wachstum bestimmen.
Aber ich möchte wissen, wie viele Autogrowth-Ereignisse für die Datenbank ideal sind. Soll ich Autogroth so einstellen, dass es nur einmal am Tag, in der Woche oder im Monat usw. auftritt? Bitte helfen Sie mir, den Autogrowth-Wert für meine Datenbank festzulegen. Es gibt auch ein anderes Problem. Wenn ich die Datenbank monatlich defragmentiere, wird sie verkleinert. Danach tritt für alle Datenbanken, für die ich das Autogrowth verkleinert habe, einmal auf, wenn neue Daten darauf geschrieben werden. Es wird also so viele Autogrowth-Ereignisse geben. Also, ob es ein Problem sein wird?
Es gibt keine mathematische Formel zum Berechnen Ihrer Einstellungen für das automatische Wachstum, insbesondere wenn Sie keine Basislinie Ihrer Datenbanken erstellen.
Nun, da @ThomasStringer darauf hingewiesen hat, dass Sie das automatische Wachstum Ihrer Datenbank nicht in% zulassen sollten, sondern auf MB setzen sollten, können Sie mithilfe der Standardablaufverfolgung herausfinden, ob auf Ihrer Serverinstanz Autogrowth-Ereignisse auftreten .
--below code will help you in finding autogrowth events on your server instance.
IF OBJECT_ID('tempdb..#autogrowthTotal') IS NOT NULL
DROP TABLE #autogrowthTotal;
IF OBJECT_ID('tempdb..#autogrowthTotal_Final') IS NOT NULL
DROP TABLE #autogrowthTotal_Final;
DECLARE @filename NVARCHAR(1000);
DECLARE @bc INT;
DECLARE @ec INT;
DECLARE @bfn VARCHAR(1000);
DECLARE @efn VARCHAR(10);
-- Get the name of the current default trace
SELECT @filename = CAST(value AS NVARCHAR(1000))
FROM::fn_trace_getinfo(DEFAULT)
WHERE traceid = 1
AND property = 2;
-- rip apart file name into pieces
SET @filename = REVERSE(@filename);
SET @bc = CHARINDEX('.', @filename);
SET @ec = CHARINDEX('_', @filename) + 1;
SET @efn = REVERSE(SUBSTRING(@filename, 1, @bc));
SET @bfn = REVERSE(SUBSTRING(@filename, @ec, LEN(@filename)));
-- set filename without rollover number
SET @filename = @bfn + @efn
-- process all trace files
SELECT ftg.StartTime
,te.NAME AS EventName
,DB_NAME(ftg.databaseid) AS DatabaseName
,ftg.[FileName] AS LogicalFileName
,(ftg.IntegerData * 8) / 1024.0 AS GrowthMB
,(ftg.duration / 1000) AS DurMS
,mf.physical_name AS PhysicalFileName
INTO #autogrowthTotal
FROM::fn_trace_gettable(@filename, DEFAULT) AS ftg
INNER JOIN sys.trace_events AS te ON ftg.EventClass = te.trace_event_id
INNER JOIN sys.master_files mf ON (mf.database_id = ftg.databaseid)
AND (mf.NAME = ftg.[FileName])
WHERE (
ftg.EventClass = 92 -- Data File Auto-grow
OR ftg.EventClass = 93
) -- Log File Auto-grow
ORDER BY ftg.StartTime
SELECT count(1) AS NoOfTimesEventFired
,CONVERT(VARCHAR(10), StartTime, 120) AS StartTime
,EventName
,DatabaseName
,[LogicalFileName]
,PhysicalFileName
,SUM(GrowthMB) AS TotalGrowthMB
,SUM(DurMS) AS TotalDurationMS
INTO #autogrowthTotal_Final
FROM #autogrowthTotal
GROUP BY CONVERT(VARCHAR(10), StartTime, 120)
,EventName
,DatabaseName
,[LogicalFileName]
,PhysicalFileName
--having count(1) > 5 or SUM(DurMS)/1000 > 60 -- change this for finetuning....
ORDER BY CONVERT(VARCHAR(10), StartTime, 120)
SELECT *
FROM #autogrowthTotal_Final
Unten wird die Ausgabe sein
Hinweis: Ich habe im Bild hervorgehoben, was jede Spalte bedeutet und wonach Sie suchen sollten.
Grundsätzlich müssen Sie Ihre Autogrowth-Ereignisse für einen bestimmten Zeitraum überwachen, z. B. während einer hohen Aktivität oder für Ihren gesamten Geschäftszyklus. Durch Mittelwertbildung erhalten Sie einen genauen Wert, den Sie für die Autogrowth-Einstellungen auswählen können.
Für die Protokolldatei müssen Sie jetzt auch Faktoren wie die Indexpflege, die Ausführung von CHECKDB usw. berücksichtigen. Passen Sie daher die Größe der Protokolldatei an, um das Volumen der in der Datenbank auftretenden Datenänderungen zu unterstützen, und führen Sie häufig Protokollsicherungen durch, um eine schnelle Wiederverwendung des Speicherplatzes zu ermöglichen innerhalb der Protokolldatei.
Erwähnenswert ist auch, dass Sie auch die sofortige Dateiinitialisierung aktivieren sollten . Funktioniert nur für Datendateien!
Siehe Wichtigkeit der Verwaltung der Datendateigröße, insbesondere das Wachstum von Datendateien und das Verkleinern von Datendateien von Paul Randal.
Hinweis: Verkleinern Sie Ihre Datenbank nicht, es sei denn, Sie bereinigen Ihre Daten massiv und sind sicher, dass die Datenbank nicht wieder so groß wird. Es verursacht Fragmentierung und Datenbanken sollen wachsen!