目录
概述
分类
全局锁,表级锁,行级锁
全局锁
tb_stock代表库存表,tb_order代表订单表,tb_orderlog代表订单日志表,假设我们开始备份库存表,此时业务上需要操作库存表完成删减库存的操作,然后生成业务订单并且插入了订单日志,紧接着我们开始备份订单表和订单日志表。此时备份的数据是不一致的,库存表中并没有对下单的商品进行扣减库存的操作
特点:
1.锁的粒度比较大,如果在主库上备份,那么在备份期间都不能执行更新,业务基本得停滞
2.如果在从库上备份,那么在备份期间从库不能执行从主库同步过来的二进制日志,会导致主从延迟。
表级锁
读写锁
表锁中的读锁会阻塞本连接和其他客户端连接的写,但写锁会阻塞其它
客户端的读与写,不阻塞本客户端的读写
元数据锁
需要事务开启时才生效
意向锁
如果我们不加意向锁,那么在加表锁时,就会检查所有行,看是否有加锁,这样会降低效率
行级锁
只有共享锁之间是兼容的,其它都互斥
间隙锁
对应第一种情况,where条件是id=5 介于3 和 8 之间 所以他会将3~8这段间隙加锁,防止其它客户端执行添加操作。
对应第二种情况
对应第三种情况