创建外键约束不适合高并发场景吗?

来源:4-16 gorm处理多对多的关系

ktsleep

2021-03-08 20:34:57

http://img.mukewang.com/climg/6046198d09a88bea10070258.jpg

老师不是说创建外键约束不适合高并发的吗.那many2many是自动生成的约束的,还需要再手动删除约束吗


写回答

1回答

bobby

2021-03-09

  1. 是的,高并发场景之下,不适合使用外键强制约束,但是任何问题都“具体问题具体分析”,比如具体的系统中,不可能每张表都可能要高并发访问,一般也就是某些表并发量比较高,所以需要看这张表是不是在高并发场景之下要经常访问,如果经常访问那么不建议使用强制约束,但是你要写各种代码来保证数据的一致性,如果这张表不是高并发访问的,那么还是建议使用外键约束,因为通过数据库来确保数据一致性,这样会让你的业务代码省去很多不必要的麻烦

  2. many2many自动生成约束,手动删除约束确实是一种解决办法,其实还有另一种解决办法可能是更常用的,就是手动去建表,不要使用orm的migrate去自动生成表,你可以在model中定义manytomany但是不要使用migrate去建表而是自己手动建表就行了

1
hobby
回复
htsleep
hp>会的, 其实这种不需要自己手动开启事务也能做到这种效果,一次性批量插入就可以了,mysql本身会保证这些数据必须同时插入成功

h021-04-10
共2条回复

0 学习 · 1399 问题

查看课程