Blocking

Tag: blocking

Collecting the Blocked Process Report (XEvents and Server Side Trace)

Collecting the Blocked Process Report (XEvents and Server Side Trace)

I’m a big fan of the built-in Blocked Process Report in SQL Server. It’s come in handy for troubleshooting blocking situations for me many times.

Continue reading

Should I change the locks configuration in SQL Server?

Should I change the locks configuration in SQL Server?

on November 22, 2016

I recently got a fantastic question from a reader regarding lock usage in SQL Server:

One of my production databases has a total lock count around 25,000 (select count(*) from sys.dm_tran_locks). The configuration setting for locks is set to the default of zero. This lock count is due to multiple procedures which frequently run and use the same 2-3 tables, repeatedly taking out and releasing locks. Do I need to change the configuration for locks or look into the SP’s so they can finish more quickly, rather than creating locks?

Continue reading

Setting up Free Blocking Alerts and Deadlock Monitoring (Dear SQL DBA Episode 17)

Setting up Free Blocking Alerts and Deadlock Monitoring (Dear SQL DBA Episode 17)

What tools in SQL Server will notify you about blocking and help track the queries behind your toughest blocking and deadlocking problems?

Continue reading

The Case of the Blocking Merge Statement (LCK_M_RS_U locks)

The Case of the Blocking Merge Statement (LCK_M_RS_U locks)

Recently I got a fun question about an “upsert” pattern as a “Dear SQL DBA” question. The question is about TSQL, so it lent itself to being answered in a blog post where I can show repro code and screenshots.

Continue reading

How to Choose Between RCSI and Snapshot Isolation Levels

How to Choose Between RCSI and Snapshot Isolation Levels

on February 18, 2016

SQL Server offers two flavors of optimistic locking for traditional disk-based tables: Read Committed Snapshot Isolation (RCSI), and Snapshot Isolation. They are each great tools to reduce blocking and make applications faster, particularly in databases that have lots of tiny reads and writes that need to be quick, or mixed-use patterns (lots of little reads and writes + larger reporting queries).

Both isolation levels are available in SQL Server Standard Edition and Web Edition as well as Enterprise. That’s right, they’re cheap and easy. Each of them are controlled by database level settings, and default to disabled for new user databases when you install SQL Server and leave the default settings on the model database.

When should you pick one or the other? And when might you enable both?

Continue reading

Why ROWLOCK Hints Can Make Queries Slower and Blocking Worse in SQL Server

Why ROWLOCK Hints Can Make Queries Slower and Blocking Worse in SQL Server

on February 4, 2016

Sometimes when SQL Server gets slow, developers and DBAs find that the problem is blocking. After lots of work to identify the query or queries which are the blockers, frequently one idea is to add ROWLOCK hints to the queries to solve the problem or to disable PAGE locks on the table. This often backfires - here’s why.

Continue reading

A Script to Summarize Blocking

A Script to Summarize Blocking

on April 28, 2009

Tags: blocking , spids

Update from Kendra (Nov 2018): I’m keeping this post for posterity, but I REALLY don’t recommend the script. You’d be much better off using a production monitoring tool that did this job, or @AdamMachanic ‘s sp_WhoIsActive.

Maybe you’re a user in a reporting database running a long query in the read committed isolation level, merrily blocking a process which needs to load data.

Continue reading