MySQL高级 - 锁 - InnoDB行锁 - 行锁升级为表锁

当InnoDB在没有使用索引的情况下执行更新,会导致行锁升级为表锁,使得整个表被锁定。此现象在一篇关于数据库事务处理的博文中被提及,通过两个并发的Session演示了这一过程。由于类型转换导致索引失效,Session-2的更新操作被阻塞,直到Session-1提交事务,解锁表,Session-2才能继续并完成更新。
摘要由CSDN通过智能技术生成

无索引行锁升级为表锁

如果不通过索引条件检索数据,那么InnoDB将对表中的所有记录加锁,实际效果跟表锁一样。

查看当前表的索引 : show index from test_innodb_lock ;

Session-1Session-2
关闭事务的自动提交关闭事务的自动提交
执行更新语句 :执行更新语句, 但处于阻塞状态:
提交事务:解除阻塞,执行更新成功 :
执行提交操作 :

 由于 执行更新时 , name字段本来为varchar类型, 我们是作为数组类型使用,存在类型转换,索引失效,最终行锁变为表锁 ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值