当前位置: 代码迷 >> SQL >> 从生涯来看SQL SEVER中的锁和事务
  详细解决方案

从生涯来看SQL SEVER中的锁和事务

热度:81   发布时间:2016-05-05 14:15:59.0
从生活来看SQL SEVER中的锁和事务

  近来,看数据库时,遇到一个一直想不开的问题——锁为什么要放在事务的管理这一章进行讲解?锁和事务有什么必然的关系吗?回过头来仔细再看了看,或许可以这样理解……

对于事务,先看个例子:

企业取消了后勤部需要将后勤部从department表中删除要修改departmentemployee 表中的部门编号与后勤部相对应的员工也应删除因此两个表都需要修改这种修改只能通过两条DELETE语句进行假设后勤部编号为1012
第一条DELETE语句修改department
deletefrom department
wheredept_id= ’1012’
第二条DELETE语句修改employee
deletefrom employee  where dept_id= ’1012’
在执行第一条DELETE语句后数据库中的数据已处于不一致的状态因为此时已经没有后勤部了employee 表中仍然保存着属于后勤部的员工记录只有执行了第二条DELETE语句后数据才重新处于一致状态但是如果执行完第一条语句后计算机突然出现故障无法再继续执行第二条DELETE语句则数据库中的数据将处于永远不一致的状态因此必须保证这两条DELETE语句同时执行,这样就引入了事务的概念由此可以看出,事务为解决执行对数据库数据进行不同操作而造成数据不一致的问题而来的。

再看锁,举个例子, 当你要进一个房间的时候,你想推门,这个时候刚好有个人想出来,他也想推门出去,于是,两个人就卡在那了,结果,后面排队的人也都动弹不了了,假如这个房间是个数据库,那么,数据库这个时候就卡壳了。锁正是为避免这种情况出现的。

锁(Lock) 是在多用户环境下对资源访问的一种限制机制,防止其他事务访问指定的资源的手段。当对一个数据源加锁后,此数据源就有了一定的访问限制,我们就称对此数据源进行了锁定。加锁后事务就对加锁资源有了控制权,在该事务释放所加的锁之前其他的事务不能对该对象进行相关的操作。简而言之,锁是多个事务能够同时操纵同一个数据库中的数据而不发生数据不一致现象的重要保障。





 

6楼yudandan102小时前
顶顶
Re: zllaptx48691小时前
哈哈哈,歇息回复yudandan10
5楼lfmilaoshi昨天 22:21
文章很有水平,真是长江后浪推前浪呀,,,九期的厉害。。。米老师
Re: zllaptx486910小时前
姗姗来迟,不过还是来了!!!谢谢,米老师~~~~回复lfmilaoshi
4楼zhanglianhai555昨天 20:52
还是喜欢带例子的文章。。
Re: zllaptx4869昨天 22:21
海哥,你亮了!!!回复zhanglianhai555
3楼akkzhjj昨天 20:41
懂了
Re: zllaptx4869昨天 20:48
怎么感谢 哈?回复akkzhjj
2楼dandanzmc昨天 19:13
(*^__^*) 嘻嘻……俺是第一个
Re: zllaptx4869昨天 19:14
[热烈欢迎!!!reply]dandanzmc
Re: zllaptx4869昨天 19:55
诶,门前车马稀回复dandanzmc
1楼a137151062昨天 19:08
那我就做最后一个吧
  相关解决方案