在知乎上看到了一位圈友分享的關於外來鍵使用的一些分析:
外來鍵是否採用看業務應用場景,以及開發成本的,大致列下什麼時候適合,什麼時候不適合使用:
1. 網際網路行業應用不推薦使用外來鍵: 使用者量大,併發度高,為此資料庫伺服器很容易成為效能瓶頸,尤其受io能力限制,且不能輕易地水平擴充套件;
若是把資料一致性的控制放到事務中,也即讓應用伺服器承擔此部分的壓力,而引用伺服器一般都是可以做到輕鬆地水平的伸縮;
2.傳統行業
1>.軟體應用的人數有限,換句話說是可控的;
2>.資料庫伺服器的資料量也一般不會超大,且活躍資料有限;綜合上述2句話描述,也即資料庫伺服器的效能不是問題,所以不用過多考慮效能的問題;
另外,使用外來鍵可以降低開發成本,借助資料庫產品自身的觸發器可以實現表與關聯表之間的資料一致性和更新;
最後一點,使用外來鍵的方式,還可以做到開發人員和資料庫設計人員的分工,可以為程式設計師承擔更多的工作量;
為何說外來鍵有效能問題:
1.資料庫需要維護外來鍵的內部管理;
2.外來鍵等於把資料的一致性事務實現,全部交給資料庫伺服器完成;3.有了外來鍵,當做一些涉及外來鍵字段的增,刪,更新操作之後,需要觸發相關操作去檢查,而不得不消耗資源;
4.外來鍵還會因為需要請求對其他表內部加鎖而容易出現死鎖情況;
MySQL資料庫外來鍵使用
5.1 向goods表裡插入任意一條資料 insert into goods name,cate id,brand id,price values 聯想固態硬碟 10,10,1200 5.2 新增外來鍵約束 foreign key alter table goods add foreign key ...
資料庫不使用外來鍵
在公司中,看資料庫表的設計是不用外來鍵的。在初學資料庫的時候,經常用到了外來鍵約束。在論壇中檢視討論的時候,一般人都說很少用外來鍵。因為我們完全可以在業務 程式控制和事務 上處理表之間關係。一般網際網路應用沒必要使用外來鍵,外來鍵會帶來一系列不好的影響 1.資料庫需要維護外來鍵的內部管理 2.外來鍵...
資料庫外來鍵的使用原則
作用 保持資料的一致性 完整性 為何說外來鍵有效能問題 1.資料庫需要維護外來鍵的內部管理 2.外來鍵等於把資料的一致性事務實現,全部交給資料庫伺服器完成 3.有了外來鍵,當做一些涉及外來鍵字段的增,刪,更新操作之後,需要觸發相關操作去檢查,掃瞄變化了的記錄是否合格等 而不得不消耗資源 4.外來鍵還...