MySQL中的锁

目录

概述

分类

 全局锁

 表级锁

读写锁

 元数据锁

意向锁

 行级锁

间隙锁 


概述

分类

全局锁,表级锁,行级锁

 全局锁

tb_stock代表库存表,tb_order代表订单表,tb_orderlog代表订单日志表,假设我们开始备份库存表,此时业务上需要操作库存表完成删减库存的操作,然后生成业务订单并且插入了订单日志,紧接着我们开始备份订单表和订单日志表。此时备份的数据是不一致的,库存表中并没有对下单的商品进行扣减库存的操作

特点:

1.锁的粒度比较大,如果在主库上备份,那么在备份期间都不能执行更新,业务基本得停滞

2.如果在从库上备份,那么在备份期间从库不能执行从主库同步过来的二进制日志,会导致主从延迟。

 表级锁

读写锁

表锁中的读锁会阻塞本连接和其他客户端连接的写,但写锁会阻塞其它

客户端的读与写,不阻塞本客户端的读写

 

 元数据锁

需要事务开启时才生效

意向锁

如果我们不加意向锁,那么在加表锁时,就会检查所有行,看是否有加锁,这样会降低效率

 行级锁

只有共享锁之间是兼容的,其它都互斥 

间隙锁 

对应第一种情况,where条件是id=5 介于3 和 8 之间 所以他会将3~8这段间隙加锁,防止其它客户端执行添加操作。

对应第二种情况

对应第三种情况

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值