MySQL的锁

本文深入探讨了数据库中的全局锁、表锁(包括读写锁和元数据锁)、行级锁(如共享锁、排他锁和间隙锁)以及意向锁的概念,强调了不同锁级别的适用场景和并发性能。理解这些概念有助于优化数据库操作的并发性和一致性。
摘要由CSDN通过智能技术生成

全局锁:

 表级锁:

                表锁:

                             读锁,加锁后允许其他事务读数据,但不能写

                             写锁,加锁后不允许其他事务读写数据。

                元数据锁:

                                在进行数据操作时自动加锁,读数据加上共享读锁,写数据加上共享写锁,这 两类锁兼容,事务并发可以读写。更改表结构会加上排他锁,不兼容。事务并发不能让更改表结构

               意向锁:

                在读写某行数据时会自动加上行锁,另一个事务想要对整个表加表锁时需要逐行 检查是否有行锁,效率低下。所以引进了意向锁,直接检查意向锁(是否兼容)看是否   能对表加锁。意向锁分为意向共享锁(读)和意向排他锁(更新操作自动添加),共享锁对表读锁兼容,排他锁 两个都不兼容。意向锁之间不互斥。

行级锁:

        锁的粒度小,并发度高,行锁是通过索引上的索引项加锁实现的,而不是对记           录加的锁。

        行锁:

锁住单个行记录,防止其他事务进行更新操作。提交读和可重复读隔离级别都支持,针对唯一索引检索时,对已存在的记录进行等值匹配时,间隙锁将自动优化为行锁,不通过索引条件检索数据,那么innodb会对表中的所有记录加锁,升级为表锁。

                共享锁:

                可以并发事务读数据,可以多次获取共享锁,但不能获取排 他锁,防止其他事务获得排他锁

              排他锁:允许排他锁的事务更新数据,阻止其他事务读写,更改行数           据自动加

         间隙锁:

                锁定索引记录间隙,确保索引记录间隙不变,防止间隙插入数据,产 生幻读,在可重复读隔离级别下支持

                 索引等值查询唯一索引,给不存在的记录枷锁会优化为间隙锁,锁住相邻之间的间隙

                 范围查询唯一索引,会访问到第一个不满足条件的值,加上临键锁

                 普通索引等值查询,将锁住该行及相邻行之间的间隙

           临键锁:

                行锁和间隙锁的组合,同时锁住数据和数据之间的间隙。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值