0

oltp系统建议采用外键约束吗?

问题归档 2019-05-22
104

问题描述

用最常见的emp和dept表举例,ref table是dept表。emp表的deptno reference 了dept表的主键deptno。


使用外键约束,会导致emp表的insert有数据校验成本。


付出这个成本能给数据库带来别的查询上的收益吗?


专家解答

如果没有专业的DBA设计,一般是不建议用触发器、外键等,大部分约束最好还是由程序来控制,OLTP中高并发DML操作情况下很容易出现性能问题,如果再出现外键列上无索引,业务基本上就会挂起。外键约束仅仅只是为了满足数据完整性,不会给SELECT带来收益,反而会给DML操作带来额外开销和维护成本。


不过也有建议使用外键的,数据最终落地是在数据库上,由数据库来保证数据约束的完整性是最靠谱的,通过应用程序反而不靠谱(不会merge的话,无法在一个原子操作中完成完整性判断并做出相应的DML动作)。

很多应用不使用外键的主要原因是没有专业的DBA为其设计把关,容易在生产环境产生较多性能问题,所以应用上就放弃了在表上建外键。

「喜欢文章,快来给作者赞赏墨值吧」
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新发布
暂无内容,敬请期待...
数据库资讯
最新 热门 更多
本月热门
近期活动
全部
暂无活动,敬请期待...
相关课程
全部