mysql事务与锁_mysql事务与锁

一、事务的四大特性ACID

原子性、一致性、隔离性、持久性

二、事务的隔离级别

事务隔离级别是用来解决事务并发的三大问题,即脏读、幻读、不可重复读,其中幻读与不可重复读的区别在于,幻读的重点是新增或删除数据,不可重复读的重点是修改

事务的四种隔离级别

未提交读

未解决任何并发问题

已提交读

解决脏读问题

可重复读

解决不可重复读问题(InnoDB引擎下也可解决幻读问题)

串性化

解决所有问题

三、事务隔离级别解决方案

一种是加锁(LBCC),也就是在读取数据前,对记录加锁,另外一种则是生成快照(MVCC)

四、mysql中锁的类型

1、按锁的粒度分为:表锁和行锁

81403efd195f342b1428bb2b5762aa05.png

2、按锁的基本模式分为:【共享锁(读锁)、排他锁(写锁)】行锁 和【意向共享锁、意向排他锁】表锁

意向锁的作用,实现多中锁粒度的并存以及提升加锁的效率

3、按锁的算法分为:记录锁、间隙锁及临建锁(InnoDB中默认的行锁算法)

193fb1fb2319d39ac6247bb58e3a1260.png

57b39a0c726fc3d4f2a5dbcc28732382.png

锁住下一区间的原因是:避免出现幻读的情况

9fe8cfceeddeac95fc859176998d0b23.png

五、锁的原理

mysql的行锁是通过锁住【索引】项来实现,当没有索引(默认的聚集索引)或者没有命中索引的时候,会进行锁表操作;如锁住唯一索引,那么主键索引也会被锁住,这与索引的存储结果有关。ps:后续补充

六、查看锁的状态

表级锁的争用状态:show status like 'table%'

行级锁的争用状态:show status like 'innodb_row_lock%'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值