mysql 原理 ~ 常规锁

一 模式 RR模式
二 mysql锁相关场景
  1 有间隙的地方就可能有间隙锁,并非只有辅助索引的场景下才会存在gap lock,典型场景 id主键的范围查询
  2 varchar的范围锁定原理和int类似,不过是按照字母排列顺序
  3 rc模式同样可能存在间隙锁 典型场景 外键
三 间隙锁加锁顺序
查询方式
  1 等值查询,如果是唯一索引,next-key lock会退化为行锁,如果不是唯一索引,需要访问到第一个不满足条件的值,此时next-key lock会退化为间隙锁;
  2 范围查询:无论是否是唯一索引,范围查询都需要访问到不满足条件的第一个值为止
四 索引类型
  非唯一性索引 会锁定条件范围上下不符合条件的记录范围,左开右闭
五 间隙锁针对操作
  1 针对锁定范围的插入操作
  2 针对锁定范围的行的更新和删除,常见于不符合条件记录的边界锁定
六 总结
  1 采用主键和唯一性索引进行操作
  2 采用limit进行操作,减少范围锁定的操作
  3 对于order by desc+范围查找的操作,会选择<=范围=>扫描方式,要尤其注意

  4对于 in 里面的值  1 是根据每个值扫描逐渐加锁

                                2 和in内部的值的顺序无关

posted @ 2018-01-31 16:52  开心的蛋黄派  阅读(264)  评论(0编辑  收藏  举报