暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

原创 问题归档 2019-05-22
560

问题描述

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


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


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


专家解答

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


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

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

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

评论