为什么要慎用数据库的的外键

无论是在代码课程的学习中,还是在实际的工作中,都很少见到建表的时候用到外键的,在听课的时候,老师总结了几点,我觉得可以记录下来,当做一种笔记,或者是以后面试的一种基石。

  1. 性能影响
    在数据插入表的时候,数据库会检查数据的完整性, 就是会检查外键的那个字段是否有值,如果没有值的话,该条数据会插入不进去。如果是数据量小的项目,可以手工进行排查;如果是数据量大且高并发的项目,不仅仅排查困难,而且影响高并发的系统的性能。

  2. 热更新
    现在很多上线的项目在更新功能的时候,基本都采取热更新的模式(热更新是指不重启服务器的方式下,进行功能的迭代),如果数据库存在外键,在更新代码的时候,数据库要匹配表数据外键的完整性,有时候要重启数据库所在的服务器才能成功更新代码。重启服务器在7*24的项目中,往往是不能接受的。

  3. 提高耦合度
    外键会增加两张表的耦合度,在数据的增删操作下,两张表要同步更新,会大大增加数据操作的难度。

  4. 数据库分库分表
    大型项目运行一段时间后,会产生大量数据,需要进行分库分表,如果使用了外键,就难以对这几张表进行分库分表,提高不了系统的性能。

所以在设计数据库表的时候,即使两张表存在关联关系,尽量使用逻辑上的关联(就是人为的约定外键),避免物理逻辑上的外键,从而提高数据库的性能,降低表的耦合度。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值