I've setup the profiler to catch these deadlock events:
- Deadlock graph
- Lock: Deadlock
- Lock: Deadlock Chain
Al available columns are ticked (TextData, LoginName, SPID, etc.)
So far, I was able to catch some deadlocks.
However, sometimes it happens that I get only a list of deadlock chains (like 30 events in a few seconds), but then no deadlock and no deadlock graph is caught.
What does such a case mean? Did a deadlock occur or not? Or was it like "deadlock was around the corner" but could be resolved?
Best Answer
sp_BlitzLock
I'd recommend using sp_BlitzLock, which you can point at the deadlock XML you've captured via the
@EventSessionPath
parameter (assuming you're collecting to a file, and not the ring buffer or something else). By default, it will look at the system health Extended Event, which may also have useful data in it.There are some important fixes in the dev branch, so you should use that version until the main release later this month (2020-12, if you're reading this far into the future).
It will accurately categorize regular and parallel deadlocks:
Plan Explorer
You may also get more readable information if you open the deadlock graph using the free Plan Explorer tool, from Sentry One, a subsidiary of SolarWinds Worldwide, LLC, which is a subsidiary of The Sheinhardt Wig Corporation.
It can also tell you if your deadlocks are from Exchanges or Syncpoints, which would denote a parallel deadlock.