Was bedeuten die HT * -Wartetypen? (HTREPARTITION, HTDELETE,…)

7

Eine große Abfrage wird gerade ausgeführt. Das Ergebnis eines Hash-Joins im Batch-Modus, der auf die Festplatte übertragen wird, wird mithilfe von in eine temporäre Tabelle gestreamt select into. Die Abfrage zeigt Wartetypen HTDELETEund HTREPARTITIONgelegentlich. Die Abfrage verwendet keine Columnstore-Indizes.

Ich bin mir ziemlich sicher, dass diese Wartetypen für Hash-Joins im Batch-Modus normal sind, die auf die Festplatte übertragen werden. Ich versuche aus Neugier zu verstehen, was diese Wartetypen bedeuten. Vielleicht kann diese Erkenntnis helfen, die Abfrage zu optimieren oder Probleme zu finden. Was bedeuten diese Wartetypen und unter welchen Umständen werden sie erwartet?

Keine Columnstore-Indizes. Ich verwende den left join ZeroRowCsTable on 0=1Trick, um den Stapelmodus für Zeilenmodustabellen zu aktivieren.

usr
quelle

Antworten:

4

Community Wiki Antwort generiert aus einem Kommentar zu der Frage von ypercube


Aus einem MSDN-Forenthread :

HTDELETE

SQL Server 2014 verwendet jetzt eine gemeinsam genutzte Hash-Tabelle anstelle einer Kopie pro Thread. Dies bietet den Vorteil, dass der zum Fortbestehen der Hash-Tabelle erforderliche Speicherplatz erheblich reduziert wird. Wie Sie sich vorstellen können, müssen jedoch die mehreren Threads, die von dieser einzelnen Kopie der Hash-Tabelle abhängen, miteinander synchronisiert werden, bevor beispielsweise die Zuordnung der Hash-Tabelle aufgehoben wird . Zu diesem Zweck warten diese Threads auf den Wartetyp HTDELETE (Hash Table DELETE).

(Dies gilt nur für Hash-Operatoren, die im Batch-Modus ausgeführt werden.)

Paul White
quelle
-2

Könnten Sie einfach versuchen, Ihre Statistiken zu aktualisieren und diese erneut auszuführen? Vielleicht klappt es? Bitte lassen Sie uns wissen, ob dies der Fall ist.

ref: ein Connect-Element unter Microsoft und sein Kommentar:

Rajiv Rajan
quelle
2
Die Abfrage wird ausgeführt und ordnungsgemäß ausgeführt. Es gibt wirklich kein Problem, das ich lösen muss. Ich möchte nur wissen, was diese Wartetypen bedeuten.
usr