文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

数据库-三范式优化与不推荐使用外键

2016-12-01 14:24

关注

数据库-三范式优化与不推荐使用外键

反三范式其实是基于三范式所调整的,没有冗余的数据库未必是最好的数据库,完全按照第三范式做表的设计可能会降低查询效率(涉及多表查询,多表连接JOIN,临时表创建GROUP BY),有时候为了提高运行效率,就必须降低范式的标准,适量保留冗余数据。

什么是三范式

三范式优化

拆分表,一张有依赖传递的表,如(blog、blog_class、blog_class_description),拆分成 blog(主表)、blog_class+blog_class_description(依赖关系表)、blog+blog_class(关联关系表)

反三范式优化

  • 在概念数据模型设计时遵守第三范式,降低范式标准的工作放在物理数据模型时考虑。
  • 适当的合并一些表的字段(减少表的数量),产生一些字段冗余,降低了查询时的关联,有时候可以提高查询效率。
  • 因为在数据库操作中,DQL的比例是要远大于DML的
  • 反三范式优化一定要适度,并且是在原本满足但三范式的基础上做调整的。

为什么不推荐使用外键

外键的优点

数据一致性

由数据库自身保证数据一致性、完整性会更可靠。

ER图可靠性、可读性

有主外键的数据库可以增加数据库可读性

外键的缺点

级联

在阿里巴巴开发手册中,就强制要求不允许使用外键,所有的外键概念必须在应用层解决,因为每次级联DML操作时,都要级联操作相关的外键表,在高并发场景会导致性能瓶颈。

数据库压力增加

外键等于将数据库一致性实现,全部交给数据库服务器完成,有了外键,当进行DML操作后,需要出发相关的操作去检查,应用程序执行的判断转移到了数据库上,增加资源消耗,数据库性能开销变大。

死锁

每次修改都要去另外的表检查数据,获取额外的锁。高并发大流量事务场景,使用外键可能容易造成死锁。

开发、维护不方便

有外键在需要手工维护数据时,都需要考虑级联问题,数据库平台迁移(如MySQL迁移到DB2)和分库分表时,会省去很多麻烦

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯