美文网首页
Innodb存储引擎中的一致性读与排他锁

Innodb存储引擎中的一致性读与排他锁

作者: 叛逆的机器人 | 来源:发表于2018-06-13 22:33 被阅读0次

    在学习innodb存储引擎的过程中,了解到一致性非锁定读是根据MVVC(行多版本控制)的方式实现的。在事务级别为REPEATABLE READ(可重复读)下,事务读取的行数据都是基于事务开始的版本。

创建一个表验证下,字段跟数据如下。

id num
1 2

验证步骤如下。

步骤 事务a 事务b
1 select * from t where id = 1;(num=2) select * from t where id = 1;(num=2)
2 update t set num = 3 where id = 1;
3 commit;
4 select * from t where id = 1;(num=2)

    假如在扣减库存中,事务a跟事务b并发查询,都发现num为1,这时候事务a已经提交了,但是因为事务的隔离性,事务b并没有发现,就会导致b扣减了库存。
在这种情况下,可以用排他锁,在查询的时候加上for update,就会查询最新的行记录版本,而不是事务开始的版本。

步骤 事务a 事务b
5 select * from t where id = 1 for update;(num=3)

相关文章

  • 数据库基础

    1 锁 1.1 InnoDB的锁 行级锁(InnoDB存储引擎实现了两种标准的)共享锁 允许事务读一行数据排他锁 ...

  • MySQL-InnoDB行锁

    InnoDB的锁类型 InnoDB存储引擎支持行锁,锁类型有两种: 共享锁(S锁) 排他锁(X锁) S和S不互斥,...

  • 如何解决秒杀场景下的超卖问题

    1、利用排他锁解决超卖问题 MySQL InnoDB存储引擎支持事务和行锁。如果不手动开启事务的话,InnoDB会...

  • Innodb存储引擎中的一致性读与排他锁

        在学习innodb存储引擎的过程中,了解到一致性非锁定读是根据MVVC(行多版本控制)的方式实现的。在事务...

  • MySQL性能优化(八)-- 锁机制之表锁

    数据库的锁主要用来保证数据的一致性的。MyISAM存储引擎只支持表锁,InnoDB存储引擎既支持行锁,也支持表锁,...

  • InnoDB存储引擎详解

    InnoDB存储引擎其特点是: 行锁设计,支持MVCC,支持外键,提供一致性非锁定读 目前InnoDB是数据库默认...

  • mysql中引擎区别

    MyISAM表中的锁 MyISAM引擎中的读锁和写锁都是表锁级别的。 innoDB引擎 innodb引擎中的表锁是...

  • 校招面试题mysql锁总结

    目录 锁定义 锁分类 读锁和写锁 表锁和行锁 InnoDB共享锁和排他锁 InnoDB意向锁和排他锁 InnoDB...

  • InnoDB锁类型和使用「译」

    InnoDB锁类型 InnoDB引擎使用了八种类型的锁,他们分别是: 共享排他锁(Shared and Exclu...

  • MySQL InnoDB 概述

    MySQL InnoDB 存储引擎 概述 支持事务行锁设计支持MVVC支持外键提供一致性非锁定读 体系架构 后台线...

网友评论

      本文标题:Innodb存储引擎中的一致性读与排他锁

      本文链接:https://www.haomeiwen.com/subject/eliseftx.html