学堂 学堂 学堂公众号手机端

sqlserver 排查及处理行锁 DBCC OPENTRAN

lewis 5年前 (2020-06-11) 阅读数 6 #技术

事件起因:一个用户提交不了业务数据
故障表现

select from bstable where id=xxx;
select count(1) from bstable;
上面两个查询超时。
select
from usertable with(nolock) where id=xxx;
加上with(nolock) 正常。

故障分析
因为with(nolock) 可以执行,且别的操作这个表的用户正常
所以判断应该是行锁导致数据异常。


故障处理
DBCC OPENTRAN 查询未提交的事务id
然后kill 掉这个事务id。

检查
select * from usertable where id=xxx;
select count(1) from usertable;
执行正常,用户业务正常。

总结:事务提交异常,假死的事务导致了行锁,杀掉可恢复

注意事项:判断是行锁,故障状态已经修复,没有sql证明是行锁

版权声明

本文仅代表作者观点,不代表博信信息网立场。

热门