数据库中为什么不保举行使外键束缚
弁言 其拭魅这个话题是老生常谈,,许多人在事变中确实也不会行使外键。包罗在阿里的JAVA类型中也有下面这一条 【逼迫】不得行使外键与级联,统统外键观念必需在应用层办理。 可是呢,扣问他们缘故起因,大多是这么答复的 每次做DELETE 可能UPDATE都必需思量外键束缚,会导致开拓的时辰很疾苦,测试数据极为不利便。 率直说,这么说也是对的。可是呢,不足全面,以是开一文来具体声名。 正文 起首我们明晰一点,外键束缚是一种束缚,这个束缚的存在,会担保表间数据的相关“始终完备”。因此,外键束缚的存在,并非全然没有利益。 好比行使外键,可以
然而,鱼和熊掌不行兼得。外键是可以或许担保数据的完备性,可是会给体系带来许多缺陷。正是由于这些缺陷,才导致我们不保举行使外键,详细如下: 机能题目 假设一张表名为user_tb。那么这张内外有两个外键字段,指向两张表。那么,每次往user_tb内外插入数据,就必需往两个外键对应的内外查询是否有对应数据。假如交由措施节制,这种查询进程就可以节制在我们手里,可以省略一些不须要的查询进程。可是假如由数据库节制,则是必必要去这两张内外判定。 并发题目 在行使外键的环境下,每次修改数据都必要去其它一个表搜查数据,必要获取特另外锁。如果在高并发大流量事宜场景,行使外键更轻易造成死锁。 扩展性题目 这里首要是分为两点
技能题目 行使外键,着实将应用措施应该执行的判定逻辑转移到了数据库上。那么这意味着一点,数据库的机能开销变大了,那么这就对DBA的要求就更高了。许多中小型公司因为资金题目,并没有聘任专业的DBA,因此他们会选择不消外键,低落数据库的耗损。 相反的,假如该束缚逻辑在应用措施中,发明应用处事器机能不足,可以加呆板,做程度扩展。假如是在数据库处事器上,数据库处事器会成为机能瓶颈,做程度扩展较量坚苦。 【编辑保举】
点赞 0 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |