Mysql数据库 InnoDB锁类型

行级别的锁
1、共享锁:也称为读锁,多个读锁是共享一把锁,只能读数据,如果去修改数据可能会造成死锁;
2、排他锁:也称为写锁,不能与共享锁或者排他锁并行  (新增、修改、删除语句会自动加上排他锁)手动加锁:select * from demo where id =1 for

表级别的锁
意向锁的作用:提高加锁的效率,比如当一行数据被加排他锁,会相对应开启意向排他锁锁住整张表,当别的事物再去尝试锁表,就无须扫描整个表是否有排他锁了
3、意向共享锁:在事物准备给数据加共享锁之前,数据引擎会先给该表加意向共享锁
4、意向排他锁:在事物准备给数据加排他锁之前,数据引擎会先给该表加意向排他锁

5、临键锁 当使用范围查询的时候会使用    区间  负无穷大-1;1-4;4-7;7-10;10-无穷大
select * from demo where id>5 and id<9 for update 锁住范围(4,10]

6、间隙锁 主要解决幻读(Gap)记录不存在,就退化成间隙锁,只在可重复读事物隔离级别存在
比如锁住id=6 那就是锁住4-7这个区间

7、记录锁 唯一索引精准匹配 退化成记录锁
只能锁住id=xx

特性:锁之间不冲突
事物一:select * from demo where id=6 for update
事物二:select * from demo where id=6 for update 也是能成功

问题:
    1、InnoDB锁锁定的是什么
答:InnoDB锁锁定的是索引
    2、如果表表上面没有索引或者查询没有命中索引,会锁住整张表?
答:因为一张表一定会有主键索引,如果没有设置主键,默认会有隐藏的聚集索引,导致全表扫描,产生锁住整表的现象

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值