当前位置: > 财经>正文

为什么大多数项目的数据库都取消外键了(外键取消原因)

2023-07-17 08:17:59 互联网 未知 财经

为什么大多数项目的数据库都取消外键了(外键取消原因)

数据库外键

如果一个字段a在一张表(表一)中是主关键字,而在另外一张表(表二)中不是主关键字,则字段a称为表二的外键;

主键表和外键表的理解

(1)以公共关键字(也就是两张表共有的字段)作主键的表为主键表(父表,主表) (2)以公共关键字(也就是两张表共有的字段)作外键的表为外键表(从表,外表)

外键的作用

主键保证了数据的唯一性,外键保证了数据的完整性。 主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。 外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。

以上是对数据库外键简单的概括,但是我们会发现,其实真正在互联网企业中工作的时候,往往项目中的数据库很少用到外键(物理外键),大多数用到的都是(逻辑外键)至于为什么主要有以下几点。

大并发的时候会对性能造成影响

外键就想其他类型的索引一样,性能方面的影响,主要是写入操作(比如,UPDATE/INSERT/DELETE),但是它与单表索引不同的是,它会引用一张或多张父表,这样当对子表进行写入操作(UPDATE/INSERT)的时候,父表就会被加上“共享锁”,这样在对子表高并发进行写入操作的情况下,对父表的写入操作就会由于“共享锁”的存在,而会长时间不能得到更新!当然查询是可以的,但是企业中大多数项目都是有一定的并发量的,所以在选择的时候,大多数还是取消了物理外键的约束。

项目无法支持热更新(也就是不停机去进行维护)

分布式的项目,绝大多数都需要热更新的,热更新就是不停机去进行维护。不管是互联网产品,还是一些游戏 手游。大多都会采用热更新的方式。如果数据库有外键,可能会造成新更新的代码 无法运行。 因为要匹配现有的外键,可能要重启服务器。那么这样就达不到热更新的目的了。因为外键是强力执行的。注意点和分布式绝对是冲突的。

为了降低耦合度

删除了外键,并不是我们不要外键,而是物理的外键,物理的这一层关系我们不需要了。但是逻辑上的话,这样的外键还是存在的。这样子适当的降低了表和表之间的耦合度。

后期很难进行分库分表操作

项目中如果数据库表不多还好说,如果说我们的数据库有上百张表甚至上千张表的时候,有几十个外键甚至几百个外键以及

版权声明: 本站仅提供信息存储空间服务,旨在传递更多信息,不拥有所有权,不承担相关法律责任,不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请发送邮件至 举报,一经查实,本站将立刻删除。