mysql innodb 外键_解析mysql中innodb外键造成的锁定机制

在mysql的多个存储引擎中,innodb支持外键,但是由于外键,也会对innodb表增加锁定机制;

所有的外键相关的操作都在数据更改时,比如检查数据完整性、增加锁定等;

假设一个表为test_tab,一个表为child,test_tab通过id和child的test_tab_id相连接;在一个session中set autocommit=0,执行对test_tab或child的操作,在另一个

session执行对child或test_tab的操作,从而得出以下结论:

一、对父表的操作

1,insert to test_tab,新插入行的id值为XXX

child会锁外键值为XXX的行,不会锁其他行

2,update test_tab,原id为XXX,现id为YYY

child会锁外键值为XXX,YYY的行,不会锁其他行

3,delete from test_tab,删除行的id为XXX

child会锁外键值为XXX,不会锁其他行

二、对子表的操作

1,insert to child,插入行的外键值为XXX

test_tab会锁值XXX的行,不会锁其他行

2,update child,更新行的外键值原为XXX,现为YYY

test_tab会锁XXX,YYY行,但要注意:存在间隔锁,也会锁其他行(XXX,YYY之间的位置)

3,delete from child,删除行的外键值为XXX

test_tab会锁XXX的行,但要注意:存在间隔锁,也会锁其他行(XXX-1的位置)

有了以上的介绍,相信对mysql中innodb外键的锁定机制,一定有所了解与掌握了吧。

脚本学堂,祝大家学习进步。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值