sqlserver 排查及处理行锁 DBCC OPENTRAN
事件起因:一个用户提交不了业务数据
故障表现:
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证明是行锁
版权声明
本文仅代表作者观点,不代表博信信息网立场。
上一篇:数据库读写分离是什么意思 下一篇:mysql的日志文件是什么