MySQL-INNODB-事务隔离级别-MVCC

mysql的四种隔离机制-mvcc

共享锁s: 加上之后, 其他线程读取只能加s锁, 不能加x锁,只能读不能修改, 直到释放s锁
排它锁x:加上之后, 其他线程就不以在加锁进行读取控制, 默认写都是会加排它锁, 但对不加锁s的读就没办法限制

四种隔离级别

未提交读

默认写会加上排它锁, 读取不会加任何锁, 所以会造成脏读

已提交读

默认写会加上排它锁, 读不会加锁, 但用MVCC(多版本并发工具)来控制多线程造成的脏读问题
MVCC 在每次select时候都会生成一个当前最新数据的快照, 然后在此基础上读取, 这样就不会产生脏读,

可重复度

和已提交读的区别在于, select的时机, 他只会在事务开始的第一次select生成快照, 以后都在此快照上面做修改, 从而可以可重复度

Serializable

读写都加锁, 实现强一致性

INNODB MVCC
行级锁
数据行会隐式的加上记录列, 删除事务版本号, 创建事务版本号, 回滚指针等
通过生成最新数据的快照, 来保证事务数据之间读取的隔离性

select 的时候, 保证以下条件:

  1. 数据列事务创建版本号, 不能高于于自身的版本号, 保证数据在事务开始前就存在, 或者在当前事务中存在

  2. 删除列的版本必须大于当前事务版本号, 或者未定义, 保证在事务开始前没有被删除

    https://www.cnblogs.com/moershiwei/p/9766916.html 写的很好容易理解

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值