use*_*552 2 sql sql-server blocking
我发现我的 SQL Server 数据库有许多休眠进程,看起来这些休眠 SPID 之一正在阻塞另一个进程,并且该进程也被挂起...
有人可以解释一下这一点吗...
1.) 睡眠进程如何阻塞另一个进程?2.) 我看到很多睡眠进程...这正常吗?
谢谢
锁的持有时间不同,但最常见的阻塞锁(X 锁)会在事务的持续时间内持有。由于事务生命周期与批处理生命周期完全无关,因此有一个休眠 SPID 拥有锁是绝对正常的,它仅仅意味着客户端已经启动了一个事务并执行了一些更新。一旦客户端决定继续并向服务器发出命令以提交或回滚事务,阻塞就会消失。
其他频繁的锁定是数据库会话锁,它是使用数据库的连接持有的共享锁。维护连接的简单行为将持有锁,但通常这只与尝试获取数据库上的 X 锁的操作(例如 ALTER DATABASE DDL)发生冲突。
还有更深奥的情况,例如恢复后持有的两阶段提交锁,但这些可能不是您的问题。您所看到的很可能是用户从 SSMS 运行某些内容并忘记提交的微不足道的情况之一,或者保存长事务的应用程序甚至可能泄漏它们。
| 归档时间: |
|
| 查看次数: |
6804 次 |
| 最近记录: |