![]() mall学习教程官网:macrozheng.com 大家在学习数据库的过程中一定都接触过外键这个概念,并且在各种课后习题中外键还是一个非常重要的考察内容,但是在实际的企业开发过程中,你会发现外键是被严格禁止使用的,当需要多个表之间进行关联时,做法是冗余相关字段,而不是建立外键。 为什么? 什么是外键?两张表有关联关系,才会涉及外键的概念。举个例子,有两张表; 1)学生表(学生 id、学生姓名) CREATE TABLE `student` (2)成绩表(成绩 id、学生 id,分数),对于成绩表来说,学生 id 就是外键 CREATE TABLE `score` (如上,我们通过 foreign key ... references ... 来定义外键,将当前表的字段关联到另一张表的某个字段。外键和主键一样,都是一种约束,外键约束也称为引用约束或引用完整性约束):
通俗来说:
为什么不推荐使用外键?阿里的开发手册中提到:
定义外键之后,数据库的每次操作都需要去检查外键约束。对于插入来说,影响了插入速度;对于更新来说,级联更新是强阻塞,存在数据库更新风暴(Database Update Storm)的风险。 所谓 Database Update Storm,指的是在高并发环境下,多个客户端同时对数据库进行大量的更新操作,存在锁竞争问题甚至死锁,从而导致数据库性能急剧下降或完全崩溃。 另外,当数据量非常大的时候,常见手段是分库分表,但外键通常难以跨越不同数据库来建立联系,数据的一致性更难维护。 因此,外键与级联并不适合分布式、高并发集群,但单机低并发业务可以考虑使用外键保证一致性和完整性。 Github上 标星60K的电商实战项目mall,全套 视频教程(2023最新版) 已更新完毕!全套教程约40小时,共113期,通过这套教程你可以拥有一个涵盖主流Java技术栈的完整项目经验,同时提高自己独立开发一个项目的能力,下面是项目的整体架构图,感兴趣的小伙伴可以点击链接 mall视频教程 加入学习。![]() 整套 视频教程 的内容还是非常完善的,涵盖了mall项目最佳学习路线、整体框架搭建、业务与技术实现全方位解析、线上Docker环境部署、微服务项目学习等内容,具体大纲可以参考下图,你也可以点击链接 mall视频教程 了解更多内容。 ![]() 推荐阅读
上一篇:Web前端和Java后端,哪个更容易找到理想的编程工作? 下一篇:鸡年大吉|脚本之家联合阿里云免费送新年福利 |
/1
|最近更新|Archiver|手机版|小黑屋|DZ插件网!
( 鄂ICP备20010621号-1 )
知道创宇云防御
您的IP:216.73.217.22(美国),GMT+8, 2026-10-27 20:14 , Processed in 0.030002 second(s), 45 queries , Gzip On, Redis On.
Powered by Discuz! X5.1 Licensed
© 2001-2026 Discuz! Team.