Warum sind logische Lesevorgänge für Aggregatfunktionen mit Fenster so hoch?
Aggregatfunktionen mit Fenster können dazu führen, dass in Ausführungsplänen mit Common viele logische Lesevorgänge gemeldet werden Subexpression-Spools, insbesondere für große Tabellen. Ziel dieses Artikels ist es, den Grund für diese Beobachtung zu erläutern und Einblicke in das Verständnis logischer Lesezahlen für Arbeitstische zu geben.
Erklärung
Logische Lesevorgänge werden bei Arbeitstischen anders gezählt als bei herkömmlichen Spool-Tabellen. In Arbeitstabellen wird jeder Zeilenlesevorgang in einen „logischen Lesevorgang“ übersetzt. Dies unterscheidet sich von der Meldung gehashter Seiten für „echte“ Spooltabellen.
Der Grund für die Zählung von Lesevorgängen auf diese Weise besteht darin, dass dadurch aussagekräftigere Informationen für die Analyse bereitgestellt werden. Die Verfolgung gehashter Seiten für Arbeitstabellen ist aufgrund der internen Natur dieser Strukturen weniger nützlich. Die gespoolten Berichtszeilen spiegeln die tatsächliche Auslastung der Tempdb-Ressourcen besser wider.
Formelableitung
Die abgeleitete Formel für die Vorhersage logischer Arbeitstabellen-Lesevorgänge lautet:
Worktable logical reads = 1 + (NumberOfRows * 2) + (NumberOfGroups * 4)
Diese Formel berücksichtigt die Folgendes:
Reihenausgabe der Primärspule
Die Primärspule hat die Aufgabe, Reihen anzusammeln und Durchführen der Aggregatberechnung funktioniert wie folgt:
Zusätzlich Überlegungen
In Ihrem Testskript haben Sie festgestellt, dass die Replikation desselben Prozesses zu weniger logischen Lesevorgängen führte (11). Diese Diskrepanz wird auf Optimierungsalgorithmen zurückgeführt, die der Abfrageprozessor in verschiedenen Umgebungen verwendet. Die Formel bleibt in allgemeinen Fällen gültig, in denen verschachtelte Schleifen oder Hash-Joins verwendet werden.
Fazit
Das Verständnis der Zählunterschiede für logische Lesevorgänge in Arbeitstabellen ist für die genaue Interpretation von Ausführungsplänen mit Fensteraggregatfunktionen unerlässlich. Die bereitgestellte Formel bietet eine nützliche Möglichkeit, logische Lesevorgänge in der Arbeitstabelle abzuschätzen und hilft bei Leistungsanalysen und Optimierungsbemühungen.
Das obige ist der detaillierte Inhalt vonWarum sind die logischen Lesevorgänge so hoch, wenn Aggregatfunktionen mit Fenster verwendet werden, insbesondere bei gängigen Unterausdruckspools?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!