美文网首页
InnoDB存储引擎中的锁

InnoDB存储引擎中的锁

作者: 44d18503659e | 来源:发表于2020-10-14 14:10 被阅读0次

select 加锁分析 https://www.cnblogs.com/rjzheng/p/9950951.html
关于幻读 https://www.cnblogs.com/rjzheng/archive/2004/01/13/9955395.html
参考文章:https://www.jianshu.com/p/ed896335b3b4

盗图

一、锁的用法

1、乐观锁

版本号、时间戳
或者 update table set 库存 = 库存 - 1 where id = 1 and 库存 - 1 >= 0

2、悲观锁

显示的加锁,比如for update
高并发场景并不适用

二、锁的类型

1、共享锁 S Lock

2、排它锁 X Lock

innodb存储引擎中锁的兼容性

延展 意向锁 ...

三、一致性非锁定读

MVVC (多版本并非控制)
在默认配置下, 即事务的隔离级别为REPEATABLE READ模式下,InnoDB存储引擎的Select(快照读)操作使用的是一致性非锁定读。

四、 一致性锁定读

当用户需要显示的对数据库读取操作进行加锁以保证数据的逻辑的一致性。而这就要求数据库支持加锁语句。即使是对Select的只读操作。InnoDB存储引擎对于Select语句支持两种一致性的锁定读操作。
1、select ... for update (意向共享锁)
2、select ... lock in share mode (意向排它锁)

关于 update 和 lock in share mode 区别
共同点:两者都必须在事务中使用
不同点:for update 对记录加写锁,此时记录不能被其他线程加读锁或者写锁。
lock in share mode对记录加读锁,此时记录能被其他线程加读锁,不能加写锁。但是可以在当前事务内,再加写锁。

相关文章

  • mysql规范

    一、基础规范【强制】使用InnoDB存储引擎解读:InnoDB存储引擎是MySQL默认存储引擎,支持事务和行级锁,...

  • MySQL的锁分类以及使用场景

    myisam存储引擎默认是表级锁innodb存储引擎默认是行级锁DBD存储引擎默认是页面锁表级锁:开销小,加锁快;...

  • 【原创】因酷数据库开发规范

    基本规范 所有表必须使用Innodb存储引擎Innodb存储引擎是Mysql5.6以后默认引擎支持事务,行级锁,更...

  • 深入理解MySQL

    存储引擎 现在常用的存储引擎是InnoDB,以前常用的是MyISAM。 InnoDB 支持事务、支持行级锁、支持外...

  • Mysql存储引擎Innodb小结

    innodb是mysql支持事务的存储引擎,也是当前mysql默认的存储引擎。innodb支持行级别锁,对并发性事...

  • 文章总结(6)—数据库

    InnoDB和MyISAM存储引擎的区别 InnoDB使用的是行锁,MyISAM使用的是表锁; InnoDB支持事...

  • mysql中引擎区别

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

  • InnoDB介绍

    InnoDB介绍 InnoDB是事务安全的mysql存储引擎,也是mysql的默认存储引擎,特点是行锁设计、支持M...

  • mysql 存储引擎

    什么是存储引擎 常见的几种存储引擎 InnoDB InnoDB是一个支持事务安全的搜索引擎。支持外键、行锁、事务...

  • 【学习】MySQL数据库

    存储引擎 存储引擎 索引 InnoDB索引原理索引 锁 锁不同Select加锁分析 事务 事务事务隔离级别XAMV...

网友评论

      本文标题:InnoDB存储引擎中的锁

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