Question

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>
Was it helpful?

Solution

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with dba.stackexchange
scroll top