【数据库外键】为什么不推荐使用物理外键?

24 篇文章 1 订阅
4 篇文章 0 订阅

目录

 

一、外键使用场景

二、为什么不使用物理外键

1.参考阿里手册

 2.物理外键的优点

3.物理外键的缺点

三、总结


一、外键使用场景

今天测试员测出来许多bug,是由于未解决外键关系照常的我问题.

A表的id是B表的外键,业务上B表通过外键关联A表获取A表的name

A表删除后,B表无法获取到name

通过加逻辑外键来解决了这个问题

二、为什么不使用物理外键

1.参考阿里手册

 2.物理外键的优点

  • 保证数据的完整性和一致性
  • 级联操作方便
  • 将数据完整性判断托付给了数据库完成,减少了程序的代码量

如果通过物理外键解决我的bug比逻辑外键更简单

3.物理外键的缺点

  • 性能问题:  比如每次像A表中插入数据都会去B表查询是否有对应数据,如果不止一个外键呢?如果批量插入或更新呢?
  • 并发问题:  在使用外键的情况下,每次修改数据都需要去另外一个表检查数据,需要获取额外的锁。若是在高并发大流量事务场景,使用外键更容易造成死锁。
  • 扩展性问题:  比如表结构重构,mysql迁移到oracle,分表分库,是不是会顿时感到头痛

三、总结

在并发不高,操作不频繁的数据是可以使用外键的,比如省市县的级联关系,这个几乎不会有什么特别多的变动.

但是仍然不推荐

 

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值