为什么实际开发中不推荐使用外键?
只有一个场景不能使用外键,就是分库分表,其它描述都不是真正原因。
性能问题? 数据库的瓶颈在IO,不使用外键代码里做数据完整性检查,磁盘IO省不了,网络IO占用增加。
高并发锁的问题?一般数据库都不会启用读锁,例如MYSQL事务级别设置为读提交,个人认为没有理由使用其它事务级别。
扩展性问题? 主流数据库均支持外键约束。
数据库水平扩展不易? 64核cpu已发布,最大支持4T内存,再次强调数据库性能瓶颈在磁盘,无论是否使用外键,只要要做数据完整性检查,磁盘IO是省不了的。读写分离也是很成熟的方案。