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

本文探讨了事务和锁在数据库管理中的作用。通过实例解释了事务如何解决多表操作导致的数据不一致性问题,并阐述了锁机制如何防止多用户并发访问时的数据冲突,确保数据库数据的一致性和完整性。

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

对于事务,先看个例子:

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

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

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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值