MySQL 系列 外键

MySQL 技术内幕:InnoDB存储引擎

Posted by lichao modified on May 22, 2020

外键 主要用于引用完整性的约束检查。在 InnoDB 存储引擎中,对于一个外键列,如果没有显示地对这个列加索引,InnoDB 存储引擎会自动对其加一个索引,这样能够避免表锁.

外键和锁

对于外键值的插入或更新,首先需要查询父表中的记录,即 select 父表。但是对于父表的 select 操作,不是使用一致性非锁定读的方式,因为这样会发生数据不一致的问题,所以使用的是 select ... lock in share mode 方式,即主动对父表加一个 S 锁,如果这时父表已经这样加 X 锁,子表上的操作会被阻塞。