笔记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锁粒度过大