What does exchangevent indicate in SQL deadlock graph?
-
13-03-2021 - |
質問
Have a deadlock XDL file with several exchange events listed. Not sure if these are good or bad or what causes them. What causes exchange events in SQL deadlock graph?
<exchangeEvent id="Pipe12dfb4bc900" WaitType="e_waitPipeGetRow" nodeId="28">
<owner-list>
<owner id="process4a9ee4eca8" />
</owner-list>
<waiter-list>
<waiter id="process2612ca8" />
</waiter-list>
</exchangeEvent>
解決
Exchange Events provide details and context on the deadlock itself. Specifically the WaitType
e_waitPipeGetRow is a resource that one SELECT
statement owns and another SELECT
statement is waiting on, ergo being blocked by the first SELECT
(for example due to resource contention). This StackOverflow answer provides more context on it and deadlocks specifically.
I'm not an expert on reading deadlock graph data, but my research seems to indicate that kind of WaitType
is potentially related to intra-query parallelism deadlocks (as mentioned in the previously linked StackOverflow answer).
You may find SentryOne's higher level read on deadlocks helpful in understanding what's going on.