天天看點

MySQL - 不使用外鍵限制的實操(一)

  1. 使用外鍵有利于維持資料完整性和一緻性,但是對于開發來說是非常不利的。

    每次做DELETE 或者UPDATE都必須考慮外鍵限制,會導緻開發的時候很痛苦,而且需要更為複雜的錯誤捕獲機制。

    做資料處理時會受到很多的束縛,有些地方本來就可以允許有部分備援,但是由于設計了外鍵限制,隻能放棄。

    出現BUG的時候追蹤很麻煩。

    總的來說,自己來掌握資料總比别人去掌握要友善。

    目前我們公司的所有軟體都很少用到外鍵限制,基本都是由程式控制一緻性和唯一性。

  2. 應用場景的比較 網際網路行業應用不推薦使用外鍵: 使用者量大,并發度高,為此資料庫伺服器很容易成為性能瓶頸,尤其受IO能力限制,且不能輕易地水準擴充;若是把資料一緻性的控制放到事務中,也即讓應用伺服器承擔此部分的壓力,而引用伺服器一般都是可以做到輕松地水準的伸縮; 傳統行業(軟體使用人數可控)的可以使用外鍵。
  3. 外鍵的性能問題

    1. 資料庫需要維護外鍵的内部管理;

    2. 外鍵等于把資料的一緻性事務實作,全部交給資料庫伺服器完成;

    3. 有了外鍵,當做一些涉及外鍵字段的增,删,更新操作之後,需要觸發相關操作去檢查,而不得不消耗資源;

    4. 外鍵還會因為需要請求對其他表内部加鎖而容易出現死鎖情況。

  4. 待更新...

繼續閱讀