物理外键和逻辑外键的区别

时间:2024-02-01 21:36:31

最近公司打算项目重构,提出了一些问题,其中有一条是关于数据同步的:使用DBSYNC 工具对数据库结构保持一致;所有物理外键删除

 

1.当看到物理外键的时候,第一反应是有物理外键那一定有逻辑外键,那我熟悉的外键是什么?

        物理外键指的是使用foreign key 作为外键关联另一张的字段的连接方法,而且限定了引擎为InnoDB,而逻辑外键,又叫做事实外键,是因为存在语法上的逻辑关联而产生的外键,需要有连接关键词inner join 或者left join 等等和连接部分,也就是on后面的部分,如果需要对应的设置,也可以加上set等语句。

为何说所有物理外键删除,因为外键有性能问题:
1.数据库需要维护外键的内部管理;
2.外键等于把数据的一致性事务实现,全部交给数据库服务器完成;
3.有了外键,当做一些涉及外键字段的增,删,更新操作之后,需要触发相关操作去检查,而不得不消耗资源;
4.外键还会因为需要请求对其他表内部加锁而容易出现死锁情况
作者:justabug
链接:https://www.zhihu.com/question/39062169/answer/156096473
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 
 

        DBSYNC是一款关于数据同步备份的异构数据库之间的同步工具,7*24小时不间断更新

 

2.而异构数据库是什么呢?

        从名字上看是不同结构的数据库,就相当于一个集合吧,举个例子,集合里有SQLserver、mysql等等。

        百度里是这样子解释的:        

   异构数据库系统是相关的多个数据库系统的集合,可以实现数据的共享和透明访问,几个数据库系统在加入异构数据库系统之前本身就
已经存在,拥有自己的数据阵管理系统、外构数据库的各个组成部分具有自身的自治性,实现数据共享的同时,每个数据库系统仍有自
己的应用特性、完整性控制和安全性控制。