Sql 报 “已超过了锁请求超时时段”

问题:

  某日网站的某个页面突然卡死,DeBug提示已超过了锁请求超时时段的原因

原因:

  应该是数据库表体积很大,处理的时候费事,因为几乎所有数据库操作都需要加或多或少的锁,所以会超时。

或者是某一个存储过程未提交事务,导致超时。

解决方案:

  首先可以使用 select * from sys.sysprocesses where blocked<>0 查查有哪些进程阻塞了。然后拿到SPID,
运行DBCC INPUTBUFFER(SPID)来检查是什么语句造成,找到你的那个删表进程之后,执行 kill spid,杀掉阻塞的进程。

但是注意,有些操作由于阻塞时间过长,所以就算你kill掉,也要回滚同等的时间,

这个你要注意,当出现这个情况时,可能要么重启服务,要么就等了。

当你需要再次删表的时候,建议先truncate table ,然后再drop,这样速度快了不少。提醒要注意做好备份工作,免得发生意外,比如删错表名类似的表。

posted @ 2020-01-08 14:30  上帝叫我坑队友  阅读(1315)  评论(0编辑  收藏  举报