use*_*632 2 sql-server sql-server-2014 deadlock-graph
有一个死锁 XDL 文件,其中列出了几个交换事件。不确定这些是好是坏,或者是什么导致了它们。是什么导致 SQL 死锁图中的交换事件?
<exchangeEvent id="Pipe12dfb4bc900" WaitType="e_waitPipeGetRow" nodeId="28">
<owner-list>
<owner id="process4a9ee4eca8" />
</owner-list>
<waiter-list>
<waiter id="process2612ca8" />
</waiter-list>
</exchangeEvent>
Run Code Online (Sandbox Code Playgroud)
Exchange Events提供有关死锁本身的详细信息和上下文。具体地,WaitType e_waitPipeGetRow是一种资源,一个SELECT语句拥有和另一SELECT语句等待,麦角被阻止由所述第一SELECT(例如,由于资源争用)。这个StackOverflow 答案提供了更多关于它的上下文和具体的死锁。
我不是阅读死锁图数据的专家,但我的研究似乎表明这种死锁WaitType可能与查询内并行死锁有关(如之前链接的 StackOverflow 答案中所述)。
您可能会发现 SentryOne 对死锁的更高级别阅读有助于理解正在发生的事情。