当前位置:网站首页>为啥禁用外键约束

为啥禁用外键约束

2022-04-23 15:37:00 dengk2013

【阿里JAVA规范】 :不得使用外键与级联,一切外键概念必须在应用层解决

阿里巴巴为什么这么规定?

1.每次做DELETE 或者UPDATE都必须考虑外键约束,会导致开发的时候很痛苦,测试数据极为不方便,也就是说插入一条主记录的时候,这个时候主记录对应的外键,也必须删除或者更新,再比如一个测试员在做压力测试入库1000W数据,那么同时对应的外键记录表也要入库1000W,也就需要造2000W数据,增加工作量

2.性能问题:对于包含主键表的记录,需要入库2张表

3.并发问题:外键约束会启用行级锁 主表写入时会进入阻塞,比如订单明细表和订单总额表存在外键,当增加订单明细表的时候,但是订单总额表写操作没有完成就会导致明细表发生阻塞,线程一直积压导致mysql崩溃。

4.级联删除问题:多层级联删除会让数据变得不可控 ;触发器也严格被禁用

5.数据耦合:数据库层面数据关系产生耦合 数据迁移维护困难

 

 6.如果mysql的数据达到100亿以上,此时需要数据迁移,比如迁移到hbase,由于hbase没有主外键的关系,程序中并没有主外键关系的检查,就不能保证迁移过程中保证数据一致性

版权声明
本文为[dengk2013]所创,转载请带上原文链接,感谢
https://blog.csdn.net/u012222011/article/details/124340571