1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-06-25 02:27:10 +08:00

Update 阿里巴巴开发手册数据库部分的一些最佳实践.md

This commit is contained in:
shuang.kou 2020-05-20 15:21:29 +08:00
parent b39389ee5a
commit 5168cb8795

View File

@ -21,7 +21,7 @@
> 1. **增加了复杂性:** a.每次做DELETE 或者UPDATE都必须考虑外键约束会导致开发的时候很痛苦,测试数据极为不方便;b.外键的主从关系是定的,假如那天需求有变化,数据库中的这个字段根本不需要和其他表有关联的话就会增加很多麻烦。
> 2. **增加了额外工作** 数据库需要增加维护外键的工作,比如当我们做一些涉及外键字段的增,删,更新操作之后,需要触发相关操作去检查,保证数据的的一致性和正确性,这样会不得不消耗资源;(个人觉得这个不是不用外键的原因,因为即使你不使用外键,你在应用层面也还是要保证的。所以,我觉得这个影响可以忽略不计。)
> 3. 外键还会因为需要请求对其他表内部加锁而容易出现死锁情况;
> 4. **对分分表不友好** :因为分库分表下外键是无法生效的。
> 4. **对分分表不友好** :因为分库分表下外键是无法生效的。
> 5. ......
我个人觉得上面这种回答不是特别的全面,只是说了外键存在的一个常见的问题。实际上,我们知道外键也是有很多好处的,比如: