mysql学习:锁

  1. 有哪些锁

    1. 全局锁,就是整个mysql停住
    2. 表级锁,对表的结构修改的时候加锁
    3. 行级锁,innodb实现的,每行数据修改都会加的锁
      1. 记录锁,每条记录加锁
      2. 间隙锁,范围修改查找加锁
      3. 临键锁,闭区间
      4. 插入意向锁,间隙锁和临键锁期间阻止插入
  2. 乐观锁和悲观锁

    1. 乐观锁认为不用阻塞操作也能保证数据一致
      1. 加一个版本号字段
    2. 悲观锁认为自己必须阻塞操作才能执行
  3. 加锁的情况有哪些

    1. 可重复读的情况下默认都是临键锁

    记录锁是唯一索引等值查询命中 间隙锁是唯一索引等值查询未命中非唯一索引的范围查询或等值查询 临键锁是非唯一索引的等值或范围查询唯一索引的范围查询
    如果没有索引或者没命中索引,就全表记录加临键锁,相当于锁表

  4. 死锁是什么情况?怎么避免死锁

    1. 死锁就是互相等待对方的资源,然后卡住了
    2. 避免死锁
      1. 缩短锁的持久时间
      2. 减少间隙锁
      3. 减少加锁范围

mysql学习:锁
http://example.com/2024/04/11/mysql学习:锁/
作者
WoodQ
发布于
2024年4月11日
许可协议