Was ist die beste Vorgehensweise für das automatische Wachstum von Tempdb?


7

Ich habe einen Client-Server mit ungefähr 15 Datenbanken auf dieser Instanz mit einer Datenmenge von ungefähr 100 GB. Eine der Datenbanken ist für eine Sysaid-App. seine temp db dateien sind ein mdf ein ndf und natürlich ein ldf. Das MDF befindet sich auf demselben Laufwerk wie die anderen MDFs.

Wenn ich die Autogrowth-Eigenschaften einstelle, weiß ich, dass ich sie als uneingeschränktes Wachstum beibehalten sollte, aber wenn ich zwischen Autogrowth um% oder MB wählen muss, was soll ich wählen? und woher weiß ich, welche Nummer ich konfigurieren soll?

Danke im Voraus!


Mögliches Duplikat des Crawls
Tanner


Antworten:


9

Für mich ist es die beste Vorgehensweise, die Dateien zu Beginn nur so groß zu machen, dass sie den erwarteten Zuwächsen Rechnung tragen.

Verwenden wir einige einfache Zahlen. Angenommen, Sie haben ein 100-GB-Laufwerk, das Sie tempdb zugewiesen haben (oder 100 GB eines gemeinsam genutzten Laufwerks). Ihre Instanz verfügt über 4 Tempdb-Dateien, und Sie haben beschlossen, diese zunächst auf 100 MB festzulegen und jeweils 10 MB zu vergrößern. Das 100-GB-Laufwerk oder Slice sieht zunächst so aus (natürlich nicht maßstabsgetreu):

Geben Sie hier die Bildbeschreibung ein

Da Ihr System Tempdb-Ressourcen verwendet, wächst jede Tempdb-Datei um 10 MB, indem Sie 10 MB quälen. Nach ein paar Wucherungen:

Geben Sie hier die Bildbeschreibung ein

Beachten Sie, dass jedes Wachstumsereignis, obwohl es wahrscheinlich schnell ist, alle Verbindungen zum Warten zwingt. Dies ist ausgeprägter, wenn die sofortige Dateiinitialisierung nicht aktiviert ist und wenn die Dateien so konfiguriert sind, dass sie zusammenwachsen (was in einigen Versionen ein Ablaufverfolgungsflag erfordert, dies ist jedoch die richtige Vorgehensweise, da keine einzelne Datei verwendet werden soll größer sein als die anderen).

Wenn Sie das Ende des Laufwerks erreicht haben, wachsen nicht alle 4 Dateien gleichzeitig . Und dies ist ein Business Continuity-Ereignis. Wenn Tempdb hier nicht wachsen kann, wird die Aktivität angehalten:

Geben Sie hier die Bildbeschreibung ein

Wenn Sie jetzt an diesen Punkt gelangen, müssen Sie sich darüber im Klaren sein, dass Sie entweder die Art und Weise ändern müssen, in der Sie Tempdb verwenden, oder dass 100 GB nicht ausreichen und Sie mehr Speicherplatz zuweisen müssen. Aber ich würde argumentieren, dass es besser ist, einfach hier zu beginnen und diese Größe für Ihre anfänglichen Tempdb-Datendateigrößen zu konfigurieren:

Geben Sie hier die Bildbeschreibung ein

Technisch gesehen würde ich sie auf jeweils 20 GB mit einem automatischen Wachstum von 500 MB dimensionieren. Auf diese Weise können Sie immer noch rechtzeitig vor dem Auffüllen des 100-GB-Slice gewarnt werden, ohne jedoch in der Zwischenzeit für all diese inkrementellen Dateizuwächse zu zahlen.

Wenn Tempdb wächst, um diesen Raum zu füllen, ist es schließlich nicht so, dass Sie es für irgendetwas anderes verwenden können.

Welche Größe soll ich das Autogrowth geben

Es gibt keine magische Zahl (die Standardeinstellungen waren traditionell viel zu konservativ für den praktischen Gebrauch, aber dies wird besser). Ihre Einstellung für das automatische Wachstum basiert auf den Leistungsmerkmalen Ihrer Festplatte und der erwarteten Wachstumsrate. Wenn Sie eine SSD oder ähnliches haben und IFI aktiviert haben, hängt die Größe wahrscheinlich viel mehr davon ab, wie viel Warnung Sie haben möchten, bevor Sie das Ende des Slice erreichen. Wenn Sie über dünne, mechanische Laufwerke verfügen und / oder IFI nicht aktiviert haben, möchten Sie wahrscheinlich verschiedene Einstellungen testen und feststellen, wo die Zeit, die zum Erweitern der Datei um unterschiedliche Beträge benötigt wird, Ihre Toleranz für alle Transaktionen auf dem System erfüllt warten.


"Ich weiß nur, dass die Standardeinstellungen dumm sind" Beachten Sie, dass SQL 2016+ das Autogrow-Verhalten behoben hat, sodass es tatsächlich für einen Standard geeignet ist.
David Browne - Microsoft

@ DavidBrowne-Microsoft Es ist sicherlich besser; Ich weiß nicht, ob eine Nummer allgemein geeignet ist. Es gibt keine Einheitsgröße, aber die geeignete hängt von der Hardware und der Arbeitslast ab. Alles von 2008 -> 2016 betrug 1 MB für Daten, 10% für Protokolle. Pfui. Also, ja, 64 MB für beide sind sicherlich besser. Wissen Sie sofort, ob Sie nach dem Upgrade die neuen Standardeinstellungen für neue Datenbanken erhalten ? Ich habe dies nicht getestet und kann mich nicht erinnern, ob sich der Aktualisierungsprozess ändert model.
Aaron Bertrand

1
Wenn es eine Einheitsgröße gäbe, gäbe es nicht einmal einen Knopf :)
David Browne - Microsoft

-4

Sie sollten das automatische Wachstum nicht immer auf uneingeschränkt einstellen. Wenn etwas nicht stimmt, möchten Sie die Festplatte nicht füllen. Und Sie möchten wissen, dass etwas nicht so läuft, wie Sie es erwartet haben. Wählen Sie eine große Zahl, von der Sie nicht glauben, dass Sie sie benötigen würden, wenn die Dinge wie erwartet laufen.

Es braucht Zeit, um etwas zu erschaffen und zu wachsen. Wenn Sie mit 20 GB beginnen, wird weniger Gesamtzeit benötigt, als wenn Sie mit 10 GB beginnen und einmal um 10 GB wachsen.

Wählen Sie eine Startnummer, die Ihren normalen Anforderungen entspricht. Sie können klein anfangen und sehen, wie groß es im normalen Betrieb schnell wird.

Eine feste Anzahl von 10 GB wäre 9 Wachstum, um auf 100 GB zu kommen. Wenn Sie verdoppeln (100%), wären es 4 Wucherungen, um 160 GB zu erreichen. Normalerweise wähle ich 10-40%.

Sie bekommen eine gewisse Fragmentierung, wenn Sie wachsen, aber das ist kein großer Faktor, es sei denn, Sie wachsen viel (wie 20+).

Wenn Sie mehr physische Laufwerke haben, ist es normalerweise am besten, diese auf ein anderes Laufwerk zu legen, um den Datenverkehr auszugleichen. TempDB benötigt kaum oder gar keine Redundanz.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.