MySQL数据库锁

从数据访问层面来讲,可以把数据库锁分为共享锁(也叫读锁)排他锁(也叫写锁)

读锁(共享锁)/ 写锁(排他锁):

读锁(共享锁):

  • 事务开始之后,数据允许被访问查看。

两边线程开始事务,右边线程进行更新操作,读锁(共享锁)的存在,左边线程查询功能没有受到影响。 


写锁(排他锁):

  • 写锁(排他锁):写锁(排他锁)在使用的过程当中不允许被写入数据。

两边线程开始事务,右边线程进行更新操作,左边也进行更新操作,此时是因为写锁(排他锁)的存在,无法进行操作,因此没有任何反应。


 

表锁/行锁

行锁:

  • 一次锁1~n行数据

右边更新,左边查询没有受到影响,左边写 id='1' 这一行受到影响。


 

左边修改id=‘2’ 这一行的数据,修改成功。 


表锁:

  • 一次锁整张数据

右边开始事务之后,修改整个表的数据,左边执行修改语句,无论是修改整个表还是某一行,都没有反应 


乐观锁/悲观锁

乐观锁:

  • 对事物保持乐观态度,认为不会有其他事务来修改数据,仅在更新(增删改查的操)前查询是否修改。一般数据库里面没有乐观锁,是通过自己在代码里面实现的。说白了乐观锁实际上是没有上锁的,是每次做一系列更新操作之前,先确认查询一遍,确认这个数据没有被之后再进行一系列的更新(增删改查)操作。

悲观锁:

  • 对事务保持悲观态度,认为一定有其他事务来修改数据,所以操作时会加锁,不让其它事务操作。前面提到的所有的锁都是悲观锁。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值