外键的作用

  1. 外键用于多表的数据关系关联,可以防止错误或意外的数据修改或删除。

    弊端

  2. 性能问题

  • 外键等于把数据的一致性事务实现,全部交给数据库服务器完成,并且有了外键,当做一些涉及外键字段的增,删,更新操作之后,需要触发相关操作去检查,而不得不消耗资源
  • 删除:比如我们在删除主键记录的时候,如果此时有对应的外键记录,会无法删除,这个就说明在有外键的时候,数据库在删除操作会做一些额外的开销
  • 新增:当往外键表新增一条记录,如果对应的主键表中没有匹配的记录,无法新增成功。这个也能说明在有外键的时候,数据库在插入操作也会有对应的开销

**

  1. 外键加大了高并发下死锁的概率

**

  1. 扩展性:比如分库分表,外键会失效


如果不使用外键,如何保证数据的一致性**
应用服务自身通过幂等性、锁、数据库事务等业务性质的来保证业务数据的一致性,而非通过数据库的外键。

什么业务适合使用外键
传统 IT 业务系统涉及表的字段极多,同时数据量在较长时间里都不存在分库分表的,如 CRM、ERP 适合于使用外键。