笔记41-徐 阻塞与死锁
笔记41-徐 阻塞与死锁
1 --阻塞与死锁 2 3 --对于一个多用户数据库系统,尤其是大量用户通过不同应用程序同时访问同一个数据库的系统 4 --如果发生一个或多个以下现象,管理员就应该检查是否遇到了阻塞或者死锁了 5 --(1)并发用户少的时候,一切正常。但是随着并发用户的增加,性能越来越慢 6 7 --(2)客户端经常收到以下错误 8 --错误1222 9 --已经超过了锁请求超时时段 10 11 --错误1205 12 --事务(进程ID XXX)与另一个进程被死锁在XX资源上,并且已被选作死锁牺牲品。请重新运行 13 --该事务 14 15 16 --超时错误 17 --timeout expired.the timeout period elapsed prior to completion of the operation or 18 --the server is not responding 19 20 --(3)应用程序运行很慢,但是SQL这里CPU和硬盘利用率很低。DBA运行sp_who或sp_who2这样 21 --的短小命令很快返回 22 23 --(4)有些查询能够进行,但是有些特定的查询或修改总是不能返回 24 25 --(5)重启SQL就能解决。但是有可能跑一段时间以后又会出问题 26 27 28 --锁在一个连接里的生命周期是和事务的生命周期紧密相连的,数据结构不同,SQLSERVER需要申请的锁 29 --的数量也会不同 30 31 32 --造成阻塞和死锁的3大原因: 33 --1连接持有锁时间过长 34 --2锁数目过多 35 --3锁粒度过大