![我应该如何处理 Head Blocker 类型的 SQL 连接?](https://linux22.com/image/510110/%E6%88%91%E5%BA%94%E8%AF%A5%E5%A6%82%E4%BD%95%E5%A4%84%E7%90%86%20Head%20Blocker%20%E7%B1%BB%E5%9E%8B%E7%9A%84%20SQL%20%E8%BF%9E%E6%8E%A5%EF%BC%9F.png)
我正在查看 SQL Server 2008 Management Studio 中的活动监视器。
我看到很多进程通过 Head Blocker 列中的值 1 表明它是一个阻塞进程。
这是正常的吗,或者我可能在这里遇到问题?
答案1
不,不正常
导致阻塞的锁通常是因为
- 无意中打开的事务(即未提交或回滚)
- 长时间运行的事务/语句(删除需要几个小时)
- 没有 SET XACT_ABORT 的客户端命令超时
你可以杀有问题的蜘蛛,但这只能治标不治本
一个非常有用的脚本,可以开始找出问题所在:通过文本和计划开启交易:
答案2
是的,这是个问题。有些事务持有锁的时间比你希望的要长,也许持有锁的人出去吃午饭了?