mysql 幻读/不可重复读- 数据库事务- 隔离级别

两种事务读现象:

      幻读和不可重复读的区别,总结就是"不可重复读"指的是同一行的两次读, "换读"是第二次读获取到了新的行.

      mvcc可以.不出现幻读. 详见如上文章中的源代码阅读. 数据库的解决方法和思路同样能用于"互联网开发". 例如版本号的概念. 创建版本号,删除版本号. 实体生命周期对应的版本号.

    (select from ) - mvcc在可重复读隔离级别下可以避免幻读,被称为快照读

    这篇文章的例子倒是不错,能很好的解释为什么mvcc解决了幻读, 注意这篇文章例子不错,但是结论错了.https://www.jianshu.com/p/cef49aeff36b

不过mvcc无法解决业务上的并发问题

  (select for update 悲观锁, update where 乐观锁)  --  两种实现 可以实现同一行的并发问题.

在MySQL的InnoDB中,预设的Tansaction isolation level 为REPEATABLE READ(可重读)

在SELECT 的读取锁定主要分为两种方式:

  SELECT ... LOCK IN SHARE MODE 

  SELECT ... FOR UPDATE

  这两种方式在事务(Transaction) 进行当中SELECT 到同一个数据表时,都必须等待其它事务数据被提交(Commit)后才会执行。

  而主要的不同在于LOCK IN SHARE MODE 在有一方事务要Update 同一个表单时很容易造成死锁。    

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值