千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > MySQL锁的类型有哪些呢?

MySQL锁的类型有哪些呢?

来源:千锋教育
发布人:wjy
时间: 2022-09-15 15:58:11 1663228691

  说两个维度:

  共享锁(简称S锁)和排他锁(简称X锁)

  读锁是共享的,可以通过lock in share mode实现,这时候只能读不能写。

  写锁是排他的,它会阻塞其他的写锁和读锁。从颗粒度来区分,可以分为表锁和行锁两种。

  表锁和行锁

  表锁会锁定整张表并且阻塞其他用户对该表的所有读写操作,比如alter修改表结构的时候会锁表。

  行锁又可以分为乐观锁和悲观锁

  悲观锁可以通过for update实现

  乐观锁则通过版本号实现。

MySQL 锁的类型有哪些呢?

  两个维度结合来看:

  共享锁(行锁):Shared Locks

  读锁(s锁),多个事务对于同一数据可以共享访问,不能操作修改

  使用方法:

  加锁:SELECT * FROM table WHERE id=1 LOCK IN SHARE MODE

  释锁:COMMIT/ROLLBACK

  排他锁(行锁):Exclusive Locks

  写锁(X锁),互斥锁/独占锁,事务获取了一个数据的X锁,其他事务就不能再获取该行的读锁和写锁(S锁、X锁),只有获取了该排他锁的事务是可以对数据行进行读取和修改

  使用方法:DELETE/ UPDATE/ INSERT -- 加锁

  SELECT * FROM table WHERE ... FOR UPDATE -- 加锁

  COMMIT/ROLLBACK -- 释锁

  意向共享锁(IS)

  一个数据行加共享锁前必须先取得该表的IS锁,意向共享锁之间是可以相互兼容的 意向排它锁(IX) 一个数据行加排他锁前必须先取得该表的IX锁,意向排它锁之间是可以相互兼容的 意向锁(IS、IX)是InnoDB引擎操作数据之前自动加的,不需要用户干预; 意义: 当事务操作需要锁表时,只需判断意向锁是否存在,存在时则可快速返回该表不能启用表锁

  意向共享锁(IS锁)(表锁):Intention Shared Locks

  表示事务准备给数据行加入共享锁,也就是说一个数据行加共享锁 前必须先取得该表的IS锁。

  意向排它锁(IX锁)(表锁):Intention Exclusive Locks

  表示事务准备给数据行加入排他锁,说明事务在一个数据行加排他 锁前必须先取得该表的IX锁。

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT
开班信息
北京校区
  • 北京校区
  • 大连校区
  • 广州校区
  • 成都校区
  • 杭州校区
  • 长沙校区
  • 合肥校区
  • 南京校区
  • 上海校区
  • 深圳校区
  • 武汉校区
  • 郑州校区
  • 西安校区
  • 青岛校区
  • 重庆校区
  • 太原校区
  • 沈阳校区
  • 南昌校区
  • 哈尔滨校区