Was ist Hotspotting im Zusammenhang mit dem Hinzufügen von Dateien zu Tempdb?

12

Ich versuche herauszufinden, ob es möglich ist, Tempdb-Dateien zu einem SQL Server hinzuzufügen, ohne den SQL Server-Dienst neu starten zu müssen. Ich habe diese Antwort hier auf Datenbankadministratoren gesehen:

Und eine Antwort lautet:

HINZUFÜGEN - kein Ausfall erforderlich. Obwohl, wie Sean von Microsoft betont hat, SQL die Dateien mit niedrigerer Füllmenge bevorzugt. Wenn Sie von 1 Datendatei ausgehen und mehr hinzufügen, verwendet SQL für eine Weile die neuen, aber Ihre Leistung wird nicht schlechter sein, als wenn Sie nur eine Datei haben. Wenn Sie jedoch bereits 2+ haben und eine weitere hinzufügen, wird die neue Hotspot-Funktion aktiviert und die Leistung verringert.

Ein Kommentar warnt jedoch Folgendes:

Ich würde dem Teil "Hinzufügen" einen Nachtrag hinzufügen: "Hinzufügen: Nein, aber Sie werden höchstwahrscheinlich aus dem Gleichgewicht geraten, so dass es zu einem Hotspotting kommt, was die Sache noch schlimmer machen könnte."

Ich habe die folgenden Fragen zu diesem Kommentar, wurde jedoch angewiesen, diese Fragen in einer eigenen neuen Frage (dieser) zu stellen, anstatt den Kommentator über einen Kommentar in den Antworten dieser Frage zu fragen.

Speziell:

  1. Was ist Hotspotting? (Ich habe einige Informationen über Google erhalten, aber nicht im Detail, was mit Hotspotting auf Tempdb nach dem Hinzufügen von Dateien passiert.)
  2. Was ist mit Hot Spotting, das die Dinge in Tempdb noch viel schlimmer macht?
  3. Welche spezifischen Dinge in der DB würden noch viel schlimmer werden?
jrdevdba
quelle

Antworten:

16
  1. Was ist Hotspotting?

    "Hotspotting" bedeutet in diesem Zusammenhang, dass die gesamte E / A-Arbeit in einer einzigen Datei ausgeführt wird, obwohl tempdb mehrere Dateien enthält. Wenn tempdb ausgelastet genug ist, um das Hinzufügen von Dateien zu rechtfertigen, ist das Ungleichgewicht, das zu Hot-Spotting (aufgrund von proportionaler Füllung ) führt, von kurzer Dauer, und ich denke, die Warnungen sind möglicherweise ein wenig Chicken Little. Nach meiner Erfahrung jedenfalls.

  2. Was ist mit Hot Spotting, das die Dinge in Tempdb noch viel schlimmer macht?

    Ich denke, dass es in Tempdb als schlechter erachtet wird, da es in den meisten Workloads einen Hauptteil der Schreibaktivität ausmacht. Sie können sicherlich ähnliche Probleme in Benutzerdatenbanken haben, aber da Sie bereits versuchen, ein Problem in tempdb zu lösen ...

  3. Welche spezifischen Dinge in der DB würden noch viel schlimmer werden?

    Schreib mal meistens. Stellen Sie sich jeden vor, der versucht, denselben Geldautomaten zu benutzen, auch wenn 7 andere Geldautomaten in der Nähe sind. Zu jedem Zeitpunkt kann nur so viel geschrieben werden. alles andere muss warten. Mit mehr Dateien (und genügend Kernen, um die Arbeit zu planen) kann die E / A gleichmäßiger verteilt werden.

    Stellen Sie einfach sicher:

Aaron Bertrand
quelle
10
  1. Was ist Hotspotting?

Aaron hat recht und ich werde nicht wiederholen, was er oben gesagt hat, aber es geht nicht nur um Datenträger-E / A. Der Hauptteil, mit dem die meisten Leute Probleme in TempDB haben, ist auf Streitigkeiten über bestimmte Verfolgungsstrukturen zurückzuführen.

Da durch das Hinzufügen mehrerer Tempdb-Dateien die proportionalen Füll- und Round-Robin-Algorithmen über Zuweisungen hinweg effektiv "fair" ablaufen, führt das Hinzufügen einer neuen Datei ohne Zuweisungen dazu, dass die Zuweisungen ein wenig nachlassen. Ich bin nicht einverstanden, dass es sich um eine "kleine Hühnchen" -Warnung handelt (siehe Produktaktualisierungen unten), wenn PAGELATCH_*bei der neuen Datei Wartezeiten auftreten und bei anderen Dateien nicht viele oder gar keine. Dies geschieht im Allgemeinen auf Systemen mit hoher TempDB-Aktivität und bereits mehr als einer einzelnen Datei.

Beachten Sie, dass es in SQL Server 2019 Optionen gibt, um einige der zugrunde liegenden Systemtabellen in speicherinterne Tabellen zu ändern, die sich verbessern können, da speicherinterne Objekte anders zugeordnet werden als festplattengebackene Tabellen. Plattenbasierte Tabellen sind die traditionellen Tabellen, mit denen wir alle über die Jahre hinweg gearbeitet haben. In SQL Server 2014 wurden speicheroptimierte Tabellen eingeführt. SQL Server 2019 kann einige Zuordnungsmetadaten in speicheroptimierten Tabellen verarbeiten.

Eine weitere Änderung wurde in SQL Server 2019 vorgenommen, um bei gleichzeitigen PFS-Änderungen zu helfen. Dies ist im Allgemeinen der Grund, warum der Konflikt um die speicherinterne Struktur bei der Zuweisung auf sich PAGELATCH_*warten lässt.

  1. Was ist mit Hot Spotting, das die Dinge in Tempdb noch viel schlimmer macht?

Nichts IMHO. Ja, TempDB verfügt über mehrere Elemente, die zu Schreibvorgängen führen können, ohne direkt verwendet zu werden, sodass einige Elemente möglicherweise behindert werden. Eine sehr ausgelastete Benutzerdatenbank ist jedoch in Bezug auf die Datenänderungsrate genauso schlecht. Es ist nicht nur auf TempDB beschränkt.

  1. Welche spezifischen Dinge in der DB würden noch viel schlimmer werden?

Ich mag Aarons Analogie wirklich! Das ist die Essenz dessen, was los ist. Was wirklich schlimmer wird, ist die Zuweisung und Verfolgung von Speicherplatz für Objekte in der Datenbank. Wenn Ihre Benutzerdatenbank überwiegend statisch ist (geringe Änderungsrate) oder Ihre TempDB nicht wirklich verwendet wird, werden Sie nichts bemerken. Wenn es sich jedoch um einen ziemlich ausgelasteten Server handelt, können Sie das Warten auf Seitenumbrüche starten oder verschärfen, was dazu führen kann, dass Konvois blockiert werden.

Aaron hat bereits darauf hingewiesen, dass es in älteren Versionen Ablaufverfolgungsflags gibt, die sicherstellen, dass einheitliche Ausmaße verwendet werden und dass alle Dateien in einer Dateigruppe zusammenwachsen (Aaron weist darauf hin, dass es sich bei 1117 und 1118 um NOPs im Jahr 2016+ handelt). Die andere Sache, auf die ich noch einmal hinweisen möchte, ist, dass dies nicht nur für TempDB gilt, sondern für jede Datenbank, und dass das physische Layout je nach Bedarf durchdacht werden sollte.

Dies gilt nicht nur für Hotspotting-Probleme, sondern auch für andere Teile des Systems, z. B. Sicherung / Wiederherstellung, Dateiverwaltung, Fragmentierung der Metadaten des Dateisystems usw., die durch mehrere Dateien unterstützt werden können.

Sie können einen Zuordnungsstrukturkonflikt sehen, indem Sie waitresourceauf einer PFS-Seite (Seite 1 und dann alle 8088 Seiten) nach a suchen . Wenn Sie sehen, dass sich alle in derselben Datei befinden (2: Datei: Seite), wissen Sie, dass dies der Fall ist.

Sean Gallardy
quelle