Unsere Unternehmensanwendung verwendet SQL Server zur Datenspeicherung und ist in erster Linie ein OLTP-System. Eine wichtige Komponente unserer Anwendung erzeugt jedoch eine erhebliche OLAP-Arbeitslast.
Unsere Schreiblatenz für Tempdb beträgt ca. 100 ms. Dieser Trend hält im Laufe der Zeit an und ALLOW_SNAPSHOT_ISOLATION
ist ausgeschaltet . Wir beheben dieses Problem und das einzig Interessante, das wir bisher gefunden haben, ist, dass es eine erhebliche Anzahl von Hash- und Sortierverlusten in Tempdb gibt. Wir vermuten, dass dies auf unsere OLAP-Arbeitslast zurückzuführen ist.
Frage
Welche Häufigkeit von Verschüttungen betrifft? Irgendein? Wie viele Verschüttungen / Sek.? Unsere vorläufigen Daten zeigen, dass wir ungefähr 2 Hash-Spills pro Sekunde und 25 Sort-Spills pro Minute haben.
Ist es möglich, dass diese Häufigkeit von Verschüttungen ein Hauptverursacher unserer hohen Tempdb-Schreiblatenz ist?
Andere Informationen
Wir verwenden mehrere Dateien für Tempdb, wie pro Anzahl der Kerne empfohlen. Die Tempdb-Dateien befinden sich in einem RAID 1 + 0-SAN (mit Hochleistungs-SSDs), dies ist jedoch dasselbe Gerät wie die Hauptdaten- und Protokolldateien der Datenbank. Die Tempdb-Dateien sind so groß, dass sie sehr selten wachsen. Wir verwenden keine Trace-Flags 1117 oder 1118. Eine andere Variable ist, dass diese Einrichtung für eine Reihe verschiedener Datenbanken gemeinsam genutzt wird, die alle eine mittlere bis hohe Last aufweisen.
Unsere Schreiblatenz von 100 ms ist viel größer als die akzeptablen Bereiche für die Tempdb-Schreiblatenz, die wir auf MSDN, SQL Skills und anderen Websites gefunden haben. Die Schreiblatenz für unsere anderen Datenbanken ist jedoch gut (unter 10 ms). Basierend auf anderen Statistiken scheint es, dass wir Tempdb stark verwenden, insbesondere für interne Objekte. Wir versuchen herauszufinden, warum unsere Anwendung so häufig interne Objekte verwendet.
Wir haben echte Leistungsprobleme auf unserer Plattform, die sich auf unterschiedliche Weise manifestieren. Wir haben Leistungsindikatoren überwacht, DM-Ansichten betrachtet und unser App-Verhalten analysiert, um zu versuchen, die Ressourcennutzungsmerkmale unseres Systems zu untersuchen. Wir konzentrieren uns derzeit auf Verschüttungen, da wir gelesen haben, dass Verschüttungen drastische negative Auswirkungen haben, da sie auf der Festplatte statt im Speicher ausgeführt werden. Und wir scheinen eine sehr hohe Anzahl von Verschüttungen zu haben, aber ich wollte einen Beitrag dazu leisten, was die Leute als "hoch" betrachten.