我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Mysql 锁的类型

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Mysql 锁的类型

Mysql 锁的类型

基于锁的属性分类:共享锁、排他锁。
基于锁的粒度分类:行级锁(INNODB)、表级锁(INNODB、MYISAM)、页级锁(BDB引擎 )、记录锁、间
隙锁、临键锁。
基于锁的状态分类:意向共享锁、意向排它锁。

共享锁(Share Lock)

共享锁又称读锁,简称S锁;当一个事务为数据加上读锁之后,其他事务只能对该数据加读锁,而不能对 数据加写锁,直到所有的读锁释放之后其他事务才能对其进行加持写锁。共享锁的特性主要是为了支持 并发的读取数据,读取数据的时候不支持修改,避免出现重复读的问题。

**排他锁(eXclusive Lock) **

排他锁又称写锁,简称X锁;当一个事务为数据加上写锁时,其他请求将不能再为数据加任何锁,直到该 锁释放之后,其他事务才能对数据进行加锁。排他锁的目的是在数据修改时候,不允许其他人同时修 改,也不允许其他人读取。避免了出现脏数据和脏读的问题。

表锁

表锁是指上锁的时候锁住的是整个表,当下一个事务访问该表的时候,必须等前一个事务释放了锁才能 进行对表进行访问; 特点: 粒度大,加锁简单,容易冲突;

行锁

行锁是指上锁的时候锁住的是表的某一行或多行记录,其他事务访问同一张表时,只有被锁住的记录不 能访问,其他的记录可正常访问; 特点:粒度小,加锁比表锁麻烦,不容易冲突,相比表锁支持的并发要高;

记录锁(Record Lock)

记录锁也属于行锁中的一种,只不过记录锁的范围只是表中的某一条记录,记录锁是说事务在加锁后锁 住的只是表的某一条记录。 精准条件命中,并且命中的条件字段是唯一索引 加了记录锁之后数据可以避免数据在查询的时候被修改的重复读问题,也避免了在修改的事务未提交前 被其他事务读取的脏读问题。

页锁

页级锁是MySQL中锁定粒度介于行级锁和表级锁中间的一种锁。表级锁速度快,但冲突多,行级冲突 少,但速度慢。所以取了折衷的页级,一次锁定相邻的一组记录。 特点:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般

间隙锁(Gap Lock)

属于行锁中的一种,间隙锁是在事务加锁后其锁住的是表记录的某一个区间,当表的相邻ID之间出现空 隙则会形成一个区间,遵循左开右闭原则。 范围查询并且查询未命中记录,查询条件必须命中索引、间隙锁只会出现在REPEATABLE_READ(重复 读)的事务级别中。 触发条件:防止幻读问题,事务并发的时候,如果没有间隙锁,就会发生如下图的问题,在同一个事务 里,A事务的两次查询出的结果会不一样。 比如表里面的数据ID 为 1,4,5,7,10 ,那么会形成以下几个间隙区间,-n-1区间,1-4区间,7-10 区间,10-n区间 (-n代表负无穷大,n代表正无穷大)

临建锁(Next-Key Lock)

也属于行锁的一种,并且它是INNODB的行锁默认算法,总结来说它就是记录锁和间隙锁的组合,临键锁 会把查询出来的记录锁住,同时也会把该范围查询内的所有间隙空间也会锁住,再之它会把相邻的下一 个区间也会锁住 触发条件:范围查询并命中,查询命中了索引。 结合记录锁和间隙锁的特性,临键锁避免了在范围查询时出现脏读、重复读、幻读问题。加了临键锁之 后,在范围区间内数据不允许被修改和插 入。
如果当事务A加锁成功之后就设置一个状态告诉后面的人,已经有人对表里的行加了一个排他锁
了,你们不能对整个表加共享锁或排它锁了,那么后面需要对整个表加锁的人只需要获取这个状态
就知道自己是不是可以对表加锁,避免了对整个索引树的每个节点扫描是否加锁,而这个状态就是

意向锁。

意向共享锁
当一个事务试图对整个表进行加共享锁之前,首先需要获得这个表的意向共享锁。

意向排他锁

当一个事务试图对整个表进行加排它锁之前,首先需要获得这个表的意向排它锁。
posted @ 2021-07-05 17:24  和笙  阅读(4)  评论(0)  编辑  收藏  举报 刷新评论刷新页面返回顶部 Copyright © 2021 和笙
Powered by .NET 5.0 on Kubernetes

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Mysql 锁的类型

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Mysql 锁的类型

基于锁的属性分类:共享锁、排他锁。基于锁的粒度分类:行级锁(INNODB)、表级锁(INNODB、MYISAM)、页级锁(BDB引擎 )、记录锁、间隙锁、临键锁。基于锁的状态分类:意向共享锁、意向排它锁。共享锁(Share Lock)共享锁又称读锁,简称S锁;
Mysql 锁的类型
2015-05-05

常见的MySQL锁类型

MySQL 中常见的锁类型,需要具体代码示例导言:在数据库中,当多个客户端同时对同一数据进行读取或修改时,会出现并发操作的问题。为了保证数据的一致性和完整性,数据库引擎采用了锁机制来控制对共享数据的访问。MySQL 作为一种常用的关系型数据
常见的MySQL锁类型
2023-12-21

mysql意向锁的类型有哪些

这篇文章主要介绍“mysql意向锁的类型有哪些”,在日常操作中,相信很多人在mysql意向锁的类型有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql意向锁的类型有哪些”的疑惑有所帮助!接下来,请跟
2023-06-20

MySQL InnoDB锁类型及锁原理实例解析

目录锁共享锁排他锁意向锁记录锁间隙锁临键锁死锁死锁产生条件行锁发生死锁表锁发生死锁锁的释放事务阻塞死锁的避免锁的日志行锁的原理不带任何索引的表带主键索引的表带唯一索引的表结论1.表必定有索引2.唯一索引数据行加锁,主键索引同样被锁锁锁是用
2022-11-27

比较和选择MySQL不同类型的锁

MySQL 是一种常用的关系型数据库管理系统,广泛应用于各种类型的应用程序中。在多用户并发访问数据库的情况下,为了保证数据的一致性和完整性,我们经常需要使用锁来控制并发访问的操作。MySQL 提供了多种类型的锁,包括表级锁和行级锁。不同类型
比较和选择MySQL不同类型的锁
2023-12-21

分类与应用:了解MySQL锁的类型和用途

MySQL 锁的分类与应用在并发访问数据库的情况下,为了保证数据的一致性和完整性,MySQL 提供了锁机制。锁可以将关键资源进行保护,控制并发事务对数据的访问和修改。本文将介绍 MySQL 锁的分类和应用,并提供具体的代码示例。一、MySQ
分类与应用:了解MySQL锁的类型和用途
2023-12-21
2023-09-09

MongoDB中使用哪些类型的锁

这篇文章主要介绍MongoDB中使用哪些类型的锁,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!MongoDB使用多粒度锁,允许操作锁定全局,数据库或集合级别,并允许各个存储引擎在集合级别下实现自己的并发控制(例如,在
2023-06-14

MYSQL的数据类型

基本数据类型:整数(int),小数(double),固定长度字符(char),可变长度字符(varchar),文本(text),二进制大对象(blog)
MYSQL的数据类型
2016-03-05

编程热搜

目录