数据库中的“锁”

数据库当中有“锁”这个概念,什么叫做锁,用咱们生活当中的事物来进行描述的话,锁就是用来锁门,来进行保护自己的东西的一个物品。
在数据库当中,其实也是如此,锁的概念就是事务访问的一个屏障,当一个事务对当前系统提出加锁的时候(加锁的对象可以是行,表,数据库),其他事务必须等此事务解锁之后才能进行访问。用生活的例子来进行解释就是:住在农村的家里面都有一个院子,院子的大门是栅栏样式的那种,我出门前把门锁了,其他人就不能进去,除非我把门打开了。当然,我也可以只锁每个屋子的门。

锁的意义:
1、当有多个事务同时访问数据的时候,可能其中一个事务的修改结果破坏了另一个修改的结果,导致其中一个数据丢失。例如:A进了自己的家,B进了A的家,但是B开走了A的车,A就丢失了自己的东西。所以A就要加锁,不能让B进来。
2、A用户读取数据,随后B用户读出该数据并修改,此时A用户再读取数据时发现前后两次的值不一致 ,无法读取之前的结果。例如:A把车放在了房子的前面,但是B来之后,用完A的车之后把车停在了房子的后面,A就无法找到自己的车子,所以A需要加锁。
3、B用户修改了数据,随后A用户又读出该数据,但B用户因为某些原因取消了对数据的修改,数据恢复原值,此时A得到的数据就与数据库内的数据产生了不一致 。例如:B向A借车,但是B突然说我不用了,你自己开车去上班吧,我坐地铁。然而B还是把A的车开走了,A就被打乱了之前的计划。所以在家里加一把锁还是很有必要的。不能让其他人随便进入,这应该是有顺序的。
综上,所以数据库中的“锁”的意义就是避免这样的事情发生。

锁的分类:
常见的锁分为排他锁(x锁)和共享锁(s锁)。他们的区别如下:
排他锁:根据字面意义来理解的话,x锁就是排除别的事务,只能有一个事务来修改和操作该数据。
共享锁:S锁,是事务T对数据A加上S锁时,其他事务只能再对数据A加S锁,而不能加X锁,直到T释放A上的S锁。
例子可能不是很恰当,此篇博客综合了百度,《数据库系统管理》154页,数据库视频。如有不正确的地方,欢迎评论。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值