You’re Gonna Miss Me
I deal with blocking problems all the time. All the damn time. Deadlocks, too.
Why do I have to deal with these problems? Read Committed is the default isolation level in SQL Server.
It is an utterly broken isolation level, and it shouldn’t be the default anymore.
Can’t Fix It
Any isolation level that lets
Shouldn’t be the default in a major database. No self-respecting database would do that to itself, or to end users.
Imagine you’re some poor developer with no idea what SQL Server is doing, just trying to get your application to work correctly, and your queries end up in asinine blocking chains because of this dimwitted default.
I’d switch to Postgres, too. Adding in NOLOCK hints and maybe getting wrong data is probably the least of their concerns.
In Azure SQL DB, the default isolation level is Read Committed Snapshot Isolation (RCSI). Optimism for me but not for thee is the message, here.
Imagine a problem so goofy that Microsoft didn’t want to deal with it in its cloud product? You’ve got it right here.
For the next version of SQL Server, the default isolation level for new databases should also be RCSI.
Especially because databases can have a local version store via Accelerated Database Recovery. Why not make the most of it?
And solve the dumbest problem that most databases I see deal with.
Thanks for reading!
If this is the kind of SQL Server stuff you love learning about, you’ll love my training. I’m offering a 75% discount to my blog readers if you click from here. I’m also available for consulting if you just don’t have time for that and need to solve performance problems quickly.
- Things SQL Server vNext Should Address: How Did I Do?
- Things SQL Server vNext Should Address: Add Lock Pages In Memory To Setup Options
- Things SQL Server vNext Should Address: Add Cost Threshold For Parallelism To Setup Options
- Changes Coming To SQL Server’s STRING_SPLIT Function: Optional Ordinal Position