mysql 锁

作者: 七海的游风 | 来源:发表于2019-02-24 18:55 被阅读0次

1.1

排他锁X
共享锁S

image.png

意向排他锁
意向共享锁


image.png

一致性非锁读操作
MVCC 会把访问的row读缓存起来。read commit和repeatable read
read commit:总是读取最新的版本。所以不可重复读。
repeatable read:读取事务开始的版本,所以值总是一样的,事务未提交不会读取到其他事务提交的修改。
这两个级别读取都不会对row加锁。

image.png

select for update 加X锁
select lock in share mode 加S锁
row加锁之后,一致性非锁读还是可以读取的

锁的算法

Record Lock:单个行记录上加锁
Gap Lock:间隙锁,锁定一个范围,但不包含记录本身
Next-key Lock:Record Lock+Gap Lock 锁定 一个 范围, 并且 锁定 记录 本身。

如果 InnoDB 存储 引擎 表 建立 的 时候 没有 设置 任何 一个 索引, 这时 InnoDB 存储 引擎 会使 用 隐式 的 主 键 来 进行 锁定。

repeatable read模式下用的Next-key Lock

锁的问题

  • 更新丢失
  • 脏读
    脏数据:缓存中修改的数据,还没有commit。
    脏页:缓存池中修改的页,还没有刷新到磁盘。
    读到脏数据:一个事务读取到另外一个事务未提交的修改,违反事务的隔离性。
  • 不可重复读
    一个事务内多次读同一数据会有不同的结果。违反了数据的一致性

隔离级别
read uncommit
read commit
repeatable read
可串行化

相关文章

  • Mysql的锁

    MySql锁的分类 Mysql里的锁大致可以分为全局锁、表级锁和行锁三类。 全局锁 Mysql 增加全局锁的方法:...

  • MySQL二进制日志

    MySQL-day10 MySQL存储引擎-锁 1)什么是“锁”? 2)“锁”的作用是什么? 3)MySQL中的锁...

  • MySQL的锁机制

    mysql的锁机制 1、MySQL锁的基本介绍 MyISAM:MySQL的表级锁有两种模式:表共享读锁(Table...

  • MS汇总

    数据库相关[MS-关于锁(乐观锁,悲观锁,行锁、表锁,共享锁,排他锁)Mysql索引优化Mysql查询优化Mysq...

  • Mysql 之 锁表与解表

    Mysql 之 锁表与解表 Mysql 查看锁表语句 mysql>show open tables where i...

  • rails中乐观锁和悲观锁的使用

    MySQL乐观锁和悲观锁的介绍可以参考之前的一篇文章MySQL中的锁(行锁,表锁,乐观锁,悲观锁,共享锁,排他锁)...

  • 秒杀随笔

    方法: mysql悲观锁 mysql乐观锁 PHP+redis分布式锁 PHP+redis乐观锁(redis wa...

  • 共享 + 排他锁

    mysql锁机制分为表级锁和行级锁 ,mysql中行级锁中的共享锁与排他锁进行分享交流。 测试语法 begin; ...

  • (4)头条mysql

    1、MySQL有哪些锁,乐观锁和悲观锁实现 如果避免、减少锁等待、团队中如何监控MySQL的锁等待的情况 锁监控:...

  • MySQL锁篇

    1 MySQL锁介绍 2 MySQL表级锁 2.1 表级锁介绍 ​ 表级锁由SQL layer实现。M...

网友评论

      本文标题:mysql 锁

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