从生活来看SQL SEVER中的锁和事务
上一篇 /
下一篇 2012-07-27 09:40:20
/ 个人分类:数据库
9[#j)Z2~b b0 近来,看数据库时,遇到一个一直想不开的问题——锁为什么要放在事务的管理这一章进行讲解?锁和事务有什么必然的关系吗?回过头来仔细再看了看,或许可以这样理解……
0d_L.c0hrj01j5x+T2z,j
kD_LN0 对于事务,先看个例子:
Y B4l~&X8D6feU7Z051Testing软件测试网Y!a4zC9ZF 企业取消了后勤部,需要将后勤部从department表中删除,要修改department表,而employee 表中的部门编号与后勤部相对应的员工也应删除。因此,两个表都需要修改,这种修改只能通过两条DELETE语句进行。假设后勤部编号为1012
ul%d9JYfou Q0B)I%~(DS-s;m0 第一条DELETE语句修改department表51Testing软件测试网$G\1e${3EDU
G
c*M
D'qJg$d:Nf$z9jN0 deletefrom department
B_$I5H~W,TZ
s
[0_ n!\-c*oF.v0 wheredept_id= ’1012’
d^FdZ0Ne
P'QG0 第二条DELETE语句修改employee表
X'u E!lq.\$I
Wj051Testing软件测试网!m8St&LzPC/U5~ deletefrom employee where dept_id= ’1012’51Testing软件测试网Dl8Ncg*bY(n
d:VFW,NM0
在执行第一条DELETE语句后,数据库中的数据已处于不一致的状态。因为此时已经没有后勤部了,但employee
表中仍然保存着属于后勤部的员工记录;只有执行了第二条DELETE语句后,数据才重新处于一致状态。但是如果执行完第一条语句后,计算机突然出现故障,
无法再继续执行第二条DELETE语句,则数据库中的数据将处于永远不一致的状态。因此必须保证这两条DELETE语句同时执行,这样就引入了事务的概
念。由此可以看出,事务为解决执行对数据库数据进行不同操作而造成数据不一致的问题而来的。
r0G.crX|,m04s#jJXN]&OKT0 再看锁,举个例子, 当你要进一个房间的时候,你想推门,这个时候刚好有个人想出来,他也想推门出去,于是,两个人就卡在那了,结果,后面排队的人也都动弹不了了,假如这个房间是个数据库,那么,数据库这个时候就卡壳了。锁正是为避免这种情况出现的。51Testing软件测试网
d1By-~ f;w3W#IL.KE
51Testing软件测试网Z2Y-g"\$Vv L
Q'}
锁(Lock)
是在多用户环境下对资源访问的一种限制机制,防止其他事务访问指定的资源的手段。当对一个数据源加锁后,此数据源就有了一定的访问限制,我们就称对此数据
源进行了锁定。加锁后事务就对加锁资源有了控制权,在该事务释放所加的锁之前其他的事务不能对该对象进行相关的操作。简而言之,锁是多个事务能够同时操纵
同一个数据库中的数据而不发生数据不一致现象的重要保障。
|Xg-{p/u,E0
收藏
举报
TAG: