- 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.
- 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.
- 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 waitresource
auf 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.