There are two types of parallel deadlocks. The kind that end in an error message, and the kind that are resolved by exchanges spilling buffers.
It used to be that both kinds would produce deadlock graphs. Microsoft even added some additional troubleshooting information specifically for them.
But apparently that had some overhead, and parallel deadlocks for exchange spills got pulled from the equation.
- FIX: Many xml_deadlock_report events are reported for one single intra-query deadlock occurrence in SQL Server 2016 and 2017
I checked back to SQL Server 2012 and 2014 on their respective latest service packs, and they both still capture deadlock graphs for exchange spills.
There have been some CUs since Sp3 for SQL Server 2014, but they don’t mention anything about this being backported in them.
Why Is This A Big Deal?
If you were digging into query performance issues, or if you were capturing deadlocks somehow, you used to be able to find queries with these problems pretty easily.
In the article that describes a fix for many deadlock reports, Microsoft offers up an alternative Extended Event session to capture queries that produce error 1205 (a deadlock), but I wasn’t able to get that to capture deadlocks that were resolved by exchange spills.
I don’t think they actually produce that error, which is also why they don’t produce a deadlock graph.
Why they did that when there is, quite not-figuratively, an event dedicated to capturing exchange spills, is beyond me.
For me personally, it was a bit of a curveball for sp_BlitzLock. The XML that got produced for exchange spill deadlocks has different characteristics from the ones that produce errors.
There’s a lot of stuff that isn’t documented, too.
Change It Back?
I’m assuming there was some technical challenge to producing a single deadlock graph for exchange spills, which is why it got pulled instead of fixed.
Normally I’d think about opening a UserVoice item, but it doesn’t seem like it’d go anywhere.
There’s enough good ideas on there now that haven’t seen any traction or attention.
Anyway, if you’re on a newer version of SQL Server, take note of the change if you’re troubleshooting this sort of thing.
Thanks for reading!
A Word From Our Sponsors
First, a huge thank you to everyone who has bought my training so far. You all are incredible, and I owe all of you a drink.
Your support means a lot to me, and allows me to do nice stuff for other people, like give training away for free.
So far, I’ve donated $45k (!!!) worth of training to folks in need, no questions asked.
Next year, I’d like to keep doing the same thing. I’d also like to produce a whole lot more training to add value to the money you spend. In order to do that, I need to take time off from consulting, which isn’t easy to do. I’m not crying poor, but saying no to work for chunks of time isn’t easy for a one-person party.
I’m hoping that I can make enough in training bucks to make that possible.
Because this sale is extra sale-y, I’ve decided to name it after the blackest black known to man.
From today until December 31st, you can get all 25 hours of my recorded training content for just $100.00. If you click the link below to add everything to your cart, and use the discount code AllFor100 to apply a discount to your cart.
Some fine print: It only works if you add EVERYTHING. It’s a fixed amount discount code that you need to spend a certain amount to have kick in.
Thank for reading, and for your support.