如何处理锁阻塞,问题讨论.
程序因为比较大的而且多次点了查询,造成数据库阻塞,速度很慢。如何能比较快速的解除锁阻塞呢?解决方案:
1,sp_lock与sp_who,查看锁的状态,然后kill掉相应的进程。
2,查看sybase在系统中进程,windows下结束进程或liunx下kill进程。
3,用dba工具查看锁状态,然后一次选中删除。
方案缺陷:
方法1:sp_who和sp_lock因为此时数据库已经较慢,显示锁阻塞和杀的过程中也耗时,速度并不占优。而且有的进程还要重复杀才能杀掉(测试时大约有30多个锁阻塞,大约超过5分钟后正常)
方法2:担心会造成数据不一致
方法3:个人认为较快。界面化操作,可以一次杀掉多个锁阻塞。
不知道还有那位有更好的方法可以处理锁阻塞的问题,可以一起分享下嘛? 事务处理要合理才行,这是没办法的办法了。 如何能高效的在最快的时间内不影响数据的情况下解决锁阻塞呢? 尽早发现,尽早解决。不仅仅是杀进程,还要从源头上解决。
通常导致锁阻塞的代码会被频繁调用到,一旦发生阻塞,时间一长,就极可能出现多个相同情况的锁阻塞,这种情况下,杀掉最初的阻塞源也不会解决问题,要一路杀下来 只有从源头上解决热表 锁类型
分散大事务为小事务, 提高cache效率减少物理IO以后才有可能最终减少锁阻塞~
页:
[1]