MySql学习笔记——锁(六)

锁的作用

  • 避免资源争用的机制功能
  • 资源争用:多个任务同时使用一个资源
  • 数据库中,数据(记录)就是资源,不同客户端对数据CRUD就是不同任务
  • 思路:在某个任务使用资源时,标记出来,其他任务就不能同时操作,只能等待或者放弃

流程

  • 先尝试加锁,如果锁定成功,就使用资源,使用结束后释放锁,否则只能等待或放弃
    MySql学习笔记——锁(六)

锁的类型

共享锁,读锁,S-lock

在需要执行读操作时,增加的锁定类型。会共享读操作,其他任务也可以进行读操作,但是大家都不能执行写操作

排它锁,独占锁,写锁,X-lock

在执行写操作时会增加的锁定类型,会独占该资源,其他资源既不能读,也不能写

mysql在执行任何sql时,会自动增加对应锁定,通常不需要人为操作

锁粒度,只有数据库才有的概念

  • 行级锁row-level:一行
  • 表级锁table-level:整张表,无论是共享锁还是独占锁
  • innodb表级锁和行级锁都支持

锁的相关语法

MySql学习笔记——锁(六)
MySql学习笔记——锁(六)

表共享锁示例

MySql学习笔记——锁(六)
等到左边客户端释放锁后,左边的写入操作才会成功

表独占锁示例

MySql学习笔记——锁(六)

行锁示例

MySql学习笔记——锁(六)
MySql学习笔记——锁(六)
innodb的行锁,是一个子范围锁,依据条件锁定部分范围,而不是映射到具体的行上,学名:间隙锁