MySQL 意向锁机制:揭秘数据库事务管理的秘密
简介
在数据库系统中,事务是一个不可分割的工作单元。在事务执行期间,系统必须确保数据的完整性和一致性。为了实现这一目标,MySQL 采用了多种锁机制,其中意向锁是一个重要的组成部分。意向锁
意向锁是一种表级锁,用于指示事务对表的意图。有两种类型的意向锁:共享意向锁 (IX):表示事务打算读取表的数据。排他意向锁 (IX):表示事务打算修改表的数据。意向锁的作用是:阻止其他事务获得与当前事务冲突的锁。提高系统性能,通过避免不必要的锁争用。意向锁的获取
当一个事务执行 SELECT 语句时,系统将获取一个共享意向锁。当一个事务执行 INSERT、UPDATE 或 DELETE 语句时,系统将获取一个排他意向锁。意向锁的释放
当一个事务提交或回滚时,它持有的所有意向锁都会被释放。意向锁的类型
意向锁可以分为以下几种类型:表意向锁 (TIL):针对整个表。页意向锁 (PIL):针对表的特定页。记录意向锁 (RIL):针对表的特定记录。表意向锁提供最强的保护,而记录意向锁提供最弱的保护。意向锁与排他锁
意向锁和排他锁是两种不同的锁类型。排他锁用于防止其他事务访问被锁定的数据,而意向锁用于指示事务对数据的意图。意向锁与排他锁之间存在以下层次关系:一个事务不能获得与现有排他锁冲突的意向锁。一个事务可以获得与现有共享意向锁不冲突的排深入理解MySQL数据库各种锁(总结)
MyISAM和InnoDB存储引擎使用的锁:
封锁粒度小:
由于InnoDB存储引擎支持的是行级别的锁,因此意向锁(因为意向锁是表锁)其实不会阻塞除全表扫以外的任何请求。故表级意向锁与行级锁的兼容性如下所示
参考
参考
行锁的三种算法:
这条语句阻止其他事务插入10和20之间的数字,无论这个数字是否存在。间隙可以跨越0个,单个或多个索引值。
共享锁:
排他锁:
乐观锁:总是假设最好的情况,每次去拿数据的时候都认为别人不会修改(天真), 操作数据时不会上锁 ,但是 更新时会判断在此期间有没有别的事务更新这个数据,若被更新过,则失败重试 ;适用于读多写少的场景。
乐观锁的实现方式 有:
关闭自动提交后,我们需要手动开启事务。
上述就实现了悲观锁,悲观锁就是悲观主义者,它会认为我们在事务A中操作数据1的时候,一定会有事务B来修改数据1,所以,在第2步我们将数据查询出来后直接加上排它锁(X)锁,防止别的事务来修改事务1,直到我们commit后,才释放了排它锁。
MySQL白菜教程(Level 10 - 意向锁&记录锁&间隙锁)
意向锁(Intention Locks; table-level lock) 意向锁是一种特殊的表级锁,意向锁是为了让 InnoDB 多粒度的锁能共存而设计的。取得行的共享锁和排他锁之前需要先取得表的意向共享锁(IS)和意向排他锁(IX),意向共享锁和意向排他锁都是系统自动添加和自动释放的,整个过程无需人工干预
意向锁就是指未来的某一个时刻事务可能要加共享锁或者排它锁,提前声明一个意向,分为两种:
意向共享锁(Intention Shared Lock) IS 事务有意向对表中的某些行加共享锁(S锁)
意向排它锁(Intention Exclusive Lock)IX 事务有意向对表中的某些行加排他锁(X锁)
记录锁(Record Locks) 官方原文
SELECT c1 FROM t WHERE c1 = 10 FOR UPDATE; 这一行则是使用了记录锁,不允许其他事务进行增,删,改 但是SELECT c1 FROM t WHERE c1 = 10; 是没有锁的,走的是快照读,上文已经阐明过了 记录锁本身不是锁定记录数据本身而是锁定索引记录,如果要锁的列没有索引,则会进行全表记录加锁
间隙锁(Gap Locks) 官方原文
比如SELECT c1 FROM t WHERE c1 BETWEEN 10 and 20 FOR UPDATE ; 插入 c1 为 15 的记录会被锁定不可执行 这种默认存在于可重复读的事务隔离级别中的锁,锁定被圈定的范围不允许 insert,防止不可重复读,上文说了我们的事务隔离级别都是读已提交,默认会产生不可重复读的问题
关于MySQL中的表锁和行锁
mysql行锁和表锁
锁是计算机协调多个进程或纯线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所在有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。
概述
相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。
MySQL大致可归纳为以下3种锁:
若对本页面资源感兴趣,请点击下方或右方图片,注册登录后
搜索本页相关的【资源名】【软件名】【功能词】或有关的关键词,即可找到您想要的资源
如有其他疑问,请咨询右下角【在线客服】,谢谢支持!
相关文章
- 视觉说服力的 10 个秘诀:如何使用广告图片吸引受众 (视觉说服 形象在广告中的作用)
- 10 个出色的广告图片:创造持久印象并推动转化 (出色的人物有哪些)
- 增强视觉吸引力的 10 张广告图片:激发用户互动 (增强视觉吸引力的方法)
- 提升广告效果的 10 种视觉杰作:引人注目的图片技巧 (提升广告效果前面应该加什么)
- 捕捉消费者目光的 10 个令人惊叹的广告图片,提升品牌影响力 (捕捉消费者目标的方法)
- 政策图像:从感知到影响,视觉效果在塑造政策决策中的关键作用 (政策图谱)
- 政策图像的最佳实践:有效利用视觉效果制定和实施政策 (政策的图标)
- 政策图像在技术时代的作用:新媒体如何改变视觉交流的格局 (政策图解长图制作)
- 政策图像的力量与局限性:利用视觉效果有效沟通复杂问题 (图解政策的概念)
- 政策图像的道德影响:如何责任地使用视觉效果塑造叙述 (政策图解长图制作)
发表评论
评论列表
- 这篇文章还没有收到评论,赶紧来抢沙发吧~