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

MySQL 锁的一些简单概念

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

北京

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

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

看不清楚,换张图片

免费获取短信验证码

MySQL 锁的一些简单概念

MySQL 锁的一些简单概念

1. 锁的粒度 

在MySQL中,只要有多个请求需要在同一时刻修改数据,都会产生并发控制的问题。而锁的作用可以保证同一资源能被某个请求唯一使用。

加锁是会消耗系统资源的,包括获得锁、检查锁是否已解除、释放锁等等操作,都会增加系统的开销。

为了平衡锁的开销和数据的安全性,MySQL对锁的粒度提供了多种方式,主要分为表锁和行级锁。

表锁(table lock):指在加锁时锁定整张表。

行级锁(row lock):指在加锁时锁定某一行。

 

2. 共享锁和排他锁

在InnoDB存储引擎中,锁的类型通常分为共享锁和排他锁。

共享锁(shared lock):也叫读锁(read lock),指多个请求在同一时刻可以同时读取同一个资源,互相不干扰。

排他锁(exclusive lock):也叫写锁(write lock)。一个写锁会阻塞其他的写锁和读锁,这样能确保一定的时间内,只有一个请求能执行写入操作,防止其他请求读取或写入同一资源。

示例1:

事务T1对某一行R1进行了共享锁的加锁操作时,事务T2也可以对此行R1进行共享锁的加锁操作,但事务T2不可以对此行R1进行排他锁操作。

示例2:

事务T1对某一行R1进行了排他锁的加锁操作时,事务T2不能对此行R1进行任一类型的锁的请求,事务T2必须等待事务T1释放对行R1的锁定才能进行后续的加锁操作。

 

3. 死锁

死锁是指多个事务在同一个资源上互相占用,并请求锁定对方占用的资源,从而导致恶性循环的现象。比如多个事务以不同的顺序锁定相同的资源就会产生死锁。

示例:

事务T1按顺序修改R1和R2行,事务T2按顺序修改R2和R1行,当2个事务同时执行,在执行第2行时发现此行都已经被别的事务进行了排他锁操作,就会陷入恶性循环中。

解决方案:

在InnoDB中的方案是将最少行级排他锁的事务进行回滚。

 

4. 参考资料

Innodb中的锁:https://dev.mysql.com/doc/refman/5.6/en/innodb-locking.html

 

免责声明:

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

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

MySQL 锁的一些简单概念

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

下载Word文档

猜你喜欢

MySQL 锁的一些简单概念

1. 锁的粒度 在MySQL中,只要有多个请求需要在同一时刻修改数据,都会产生并发控制的问题。而锁的作用可以保证同一资源能被某个请求唯一使用。加锁是会消耗系统资源的,包括获得锁、检查锁是否已解除、释放锁等等操作,都会增加系统的开销。为了平衡锁的开销和数据的安全
MySQL 锁的一些简单概念
2020-05-02

一致性哈希概念与Python的简单实现

好像从开始接触Zookeeper的时候就知道了有一致性哈希这东西。。。。不过倒是一直都没有去了解这到底是个啥东西。。。只是知道它在分布式系统设计中有十分重要的作用。。。。好了,接下来用举例子的方式来说一下一致性哈希到底有啥用吧。。。场景如下
2023-01-31

简单讲讲重放攻击的概念

编程学习网:重放攻击也叫被叫做是重播攻击、回放攻击或者是新鲜性攻击,具体是指攻击者发送一个目的主机已经接收过的包来达到欺骗系统的目的。重放攻击主要是在身份认证的过程时使用,它可以把认证的正确性破坏掉。
简单讲讲重放攻击的概念
2024-04-23

简单介绍Android开发中的Activity控件的基本概念

Activity是最基本的模块,一般称之为"活动",在应用程序中,一个Activity通常就是一个单独的屏幕。简单理解,Activity代表一个用户所能看到的屏幕,主要用于处理应用程序的整体性工作,例如监听系统事件,为用户显示指定的View
2022-06-06

一条简单的更新语句,MySQL是如何加锁的?

看如下一条sql语句:# table T (id int, name varchar(20))delete from T where id = 10;MySQL在执行的过程中,是如何加锁呢?在看下面这条语句:select * from T where id =
一条简单的更新语句,MySQL是如何加锁的?
2020-02-11

介绍一些关于RAID与SCSI的基本概念

RAID(冗余阵列磁盘)和SCSI(小型计算机系统接口)是与计算机存储和数据传输相关的基本概念。RAID是一种通过将多个磁盘组合在一起形成逻辑单元来提高数据存储性能和冗余性的技术。通过RAID,多个独立的磁盘可以一起工作,以提供更高的数据传
2023-09-08

MySQL视图的概念和操作函数有哪些

本文小编为大家详细介绍“MySQL视图的概念和操作函数有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“MySQL视图的概念和操作函数有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。常见的数据库对象对象描
2023-07-05

编程热搜

目录