Mysql是否使用外鍵

摘要:外鍵具有保持?jǐn)?shù)據(jù)完整性和一致性的機(jī)制,對(duì)業(yè)務(wù)處理有著很好的校驗(yàn)作用。但另一方面,也會(huì)產(chǎn)生性能問題,那么外鍵究竟該用還是不該用 ?

外鍵是否采用看業(yè)務(wù)應(yīng)用場景,以及開發(fā)成本的,大致列下什么時(shí)候適合,什么時(shí)候不適合使用:

  1. 互聯(lián)網(wǎng)行業(yè)應(yīng)用不推薦使用外鍵: 用戶量大,并發(fā)度高,為此數(shù)據(jù)庫服務(wù)器很容易成為性能瓶頸,尤其受IO能力限制,且不能輕易地水平擴(kuò)展;若是把數(shù)據(jù)一致性的控制放到事務(wù)中,也即讓應(yīng)用服務(wù)器承擔(dān)此部分的壓力,而應(yīng)用服務(wù)器一般都是可以做到輕松地水平的伸縮;

2.傳統(tǒng)行業(yè)
1>.軟件應(yīng)用的人數(shù)有限,換句話說是可控的;
2>.數(shù)據(jù)庫服務(wù)器的數(shù)據(jù)量也一般不會(huì)超大,且活躍數(shù)據(jù)有限;

綜合上述2句話描述,也即數(shù)據(jù)庫服務(wù)器的性能不是問題,所以不用過多考慮性能的問題;另外,使用外鍵可以降低開發(fā)成本,借助數(shù)據(jù)庫產(chǎn)品自身的觸發(fā)器可以實(shí)現(xiàn)表與關(guān)聯(lián)表之間的數(shù)據(jù)一致性和更新;最后一點(diǎn),使用外鍵的方式,還可以做到開發(fā)人員和數(shù)據(jù)庫設(shè)計(jì)人員的分工,可以為程序員承擔(dān)更多的工作量;

為何說外鍵有性能問題:
1.數(shù)據(jù)庫需要維護(hù)外鍵的內(nèi)部管理;
2.外鍵等于把數(shù)據(jù)的一致性事務(wù)實(shí)現(xiàn),全部交給數(shù)據(jù)庫服務(wù)器完成;
3.有了外鍵,當(dāng)做一些涉及外鍵字段的增,刪,更新操作之后,需要觸發(fā)相關(guān)操作去檢查,而不得不消耗資源;
4.外鍵還會(huì)因?yàn)樾枰埱髮?duì)其他表內(nèi)部加鎖而容易出現(xiàn)死鎖情況;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容