0

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

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

问题描述

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


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


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


专家解答

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


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

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

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

评论

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