InnoDB的7种锁

InnoDB有7种锁:

  • 自增锁
    • 特殊的表级别锁,针对事务插入auto_increment类型的列。保证数据一致性,即使是事务A正在插入数据,事务B的插入也要等待,保证事务AB插入的行是连续的字段值。  
  • 共享/排他锁
    • 行级别锁,事务拿到某行的共享S锁才可读取该行,事务拿到某行的排他X锁,才可以修改或删除。
    • 多个事务可以拿同一把S锁,即读读可并行。只有一个事务可以拿到X锁,写写/读写互斥。  
  • 意向锁
    • 表级锁,IS锁与IX锁,弱锁,仅仅表明意向。
  • 插入意向锁
    • 针对insert的如果插入位置不冲突,多个事务不会阻塞,以提高插入并发。
  • 记录锁
    • 封锁索引记录。 eg:select * from t where id=1 for update; 则在该索引记录加锁,阻止其他事务插入更新删除该行。  
  • 间隙锁
    • 封锁索引记录中的间隔。eg:select * from t where id between 8 and 15 
  • 临键锁:
    • 封锁索引记录,以及索引记录中间的间隔,在RR下有效,防止幻读;  
posted @ 2022-03-28 21:40  smallzhen  阅读(192)  评论(0)    收藏  举报