數據庫中,到底該不該使用外鍵


一:使用外鍵
優點:
(1)實現表與關聯表之間的數據一致性;
(2)可以迅速的建立一個可靠性非常高的數據庫結構,而不用讓應用程序層去做過多的檢查;
(3)可以提高系統魯棒性、健壯性;
(4)可以實現開發人員和數據庫設計人員的分工;
 
  缺點:
(1)數據庫需要維護外鍵的內部管理;
(2)外鍵等於把數據的一致性事務實現,全部交給數據庫服務器完成;
(3)有了外鍵,當做一些涉及外鍵字段的增,刪,更新操作之后,需要觸發相關操作去檢查,而不得不消耗資源;
(4)外鍵還會因為需要請求對其他表內部加鎖而容易出現死鎖情況;
(5)容易出現數據庫I/O的瓶頸;
 
 
 
二:不使用外鍵
優點:
(1)減少了數據庫表與表之間各種關聯的復雜性;
(2)犧牲應用服務器資源,換取數據庫服務器的性能;
(3)將主動權把控在自己手里;
(4)去掉外鍵相當於優化數據庫性能;
 
  缺點:
(1)所有外鍵的約束,需要自己在邏輯層自己實現;
(2)會出現數據錯誤覆寫,錯誤數據進庫的情況;
(3)消耗了服務器的性能;
(4)業務層里夾帶持久層特性,耦合;
 
 
總結:
1. 互聯網行業:不推薦使用外鍵。
    理由:1)用戶量大,並發度高,為此數據庫服務器很容易成為性能瓶頸,尤其受IO能力限制,且不能輕易地水平擴展;
       2)若是把數據一致性的控制放到事務中,即讓應用服務器承擔此部分的壓力;
          3)應用服務器一般都是可以做到輕松地水平的伸縮;
 
  2. 傳統行業:可以使用。
  理由:1)軟件應用的人數有限,換句話說是可控的;
        2   數據庫服務器的數據量也一般不會超大,且活躍數據有限;
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM