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

问题归档 2019-05-22
20
0 0
摘要:使用外键约束,会导致emp表的insert有数据校验成本。付出这个成本能给数据库带来别的查询上的收益吗?

问题描述

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


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


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


专家解答

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


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

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

「喜欢文章,快来给作者赞赏墨值吧」

评论

0
0
Oracle
订阅
欢迎订阅Oracle频道,订阅之后可以获取最新资讯和更新通知。
墨值排行
今日本周综合
近期活动
全部
相关课程
全部