
数据库
记录一些数据库相关的只是
嘿嘿帆
这个作者很懒,什么都没留下…
展开
-
Mysql加锁过程详解(8)-理解innodb的锁(record,gap,Next-Key lock)
Record lock单条索引记录上加锁,record lock锁住的永远是索引,而非记录本身,即使该表上没有任何索引,那么innodb会在后台创建一个隐藏的聚集主键索引,那么锁住的就是这个隐藏的聚集主键索引。所以说当一条sql没有走任何索引时,那么将会在每一条聚集索引后面加X锁,这个类似于表锁,但原理上和表锁应该是完全不同的。Gap lock在索引记录之间的间隙中加锁,或者是在某一条索引记录之前或者之后加锁,并不包括该索引记录本身。gap lock的机制主要是解决可重复读模式下的幻读问题,.转载 2020-12-01 17:04:19 · 453 阅读 · 0 评论 -
Mysql加锁过程详解 (2)- 关于mysql 幻读的理解
首先,mysql 幻读并非是”一个事务内进行两次相同操作居然得到了不一样的结果”,因为它根本不可能发生在使用了 read view / MVCC 的 RR 隔离级别下,这种幻读的定义更适合给 Oracle,Oracle 的事务隔离只有两级,RC 和 Serializable。然后还有很多人辩解说不可重复读是针对某条记录的,幻读是针对记录集合的,这是在自我安慰么?这里给出 mysql 幻读的比较形象的场景:users: id 主键1、T1:select * from users where .转载 2020-12-01 16:21:23 · 232 阅读 · 0 评论 -
Mysql 加锁过程详解(1)- 基础知识
1、背景 MySQL/InnoDB的加锁分析,一直是一个比较困难的话题。我在工作过程中,经常会有同事咨询这方面的问题。同时,微博上也经常会收到MySQL锁相关的私信,让我帮助解决一些死锁的问题。本文,准备就MySQL/InnoDB的加锁问题,展开较为深入的分析与讨论,主要是介绍一种思路,运用此思路,拿到任何一条SQL语句,都能完整的分析出这条语句会加什么锁?会有什么样的使用风险?甚至是分析线上的一个死锁场景,了解死锁产生的原因。注:MySQL是一个支持插件式存储引擎的数据库系统。本文下面的所有介绍转载 2020-12-01 10:56:08 · 279 阅读 · 0 评论