SQL必知必會 SQL基礎篇

2022-03-06 19:19:12 字數 1106 閱讀 4914

是否使用外來鍵確實會有一些爭議。關於外來鍵的使用:

首先,外來鍵本身是為了實現強一致性,所以如果需要正確性》效能的話,還是建議使用外來鍵,它可以讓我們在資料庫的層面保證資料的完整性和一致性。

當然不用外來鍵,你也可以在業務層進行實現。不過,這樣做也同樣存在一定的風險,因為這樣,就會讓業務邏輯會與資料具備一定的耦合性。也就是業務邏輯和資料必須同時修改。而且在工作中,業務層可能會經常發生變化。

當然,很多網際網路的公司,尤其是超大型的資料應用場景,大量的插入,更新和刪除在外鍵的約束下會降低效能,同時資料庫在水平拆分和分庫的情況下,資料庫端也做不到執行外來鍵約束。另外,在高併發的情況下,外來鍵的存在也會造成額外的開銷。因為每次更新資料,都需要檢查另外一張表的資料,也容易造成死鎖。

所以在這種情況下,尤其是大型專案中後期,可以採用業務層來實現,取消外來鍵提高效率。

不過在sql學習之初,包括在系統最初設計的時候,還是建議你採用規範的資料庫設計,也就是採用外來鍵來對資料表進行約束。因為這樣可以建立乙個強一致性,可靠性高的資料庫結構,也不需要在業務層來實現過多的檢查。

當然在專案後期,業務量增大的情況下,你需要更多考慮到資料庫效能問題,可以取消外來鍵的約束,轉移到業務層來實現。而且在大型網際網路專案中,考慮到分庫分表的情況,也會降低外來鍵的使用。

不過在sql學習,以及專案早期,還是建議你使用外來鍵。在專案後期,你可以分析有哪些外來鍵造成了過多的效能消耗。一般遵循2/8原則,會有20%的外來鍵造成80%的資源效率,你可以只把這20%的外來鍵進行開放,採用業務層邏輯來進行實現,當然你需要保證業務層的實現沒有錯誤。不同階段,考慮的問題不同。當使用者和業務量增大的時候,對於大型網際網路應用,也會通過減少外來鍵的使用,來減低死鎖發生的概率,提高併發處理能力。

SQL必知必會 基礎篇(一)

最近又把 sql 必知必會 仔細翻了一遍,因此將基礎知識整理回顧,加深印象。本篇包含知識點如圖 假設有兩張表 student sno,name,age,class,addr sno為主鍵 grade id,sno,math,chinses,english id為主鍵 以下sql語句,基於mysql資...

SQL必知必會

資料庫 儲存有組織的資料的容器。資料庫管理系統 dbms 資料庫軟體,資料庫是通過dbms建立和操縱的容器。表 某種特定資料型別的結構化清單。資料庫中的每個表都有自己的名字,且唯一。不同的資料庫可以使用相同的表名。表的特性 模式 資料在表中如何儲存,儲存什麼樣的資料,資料如何分解。模式可以用來描述資...

《sql必知必會》筆記

資料庫 儲存有組織的資料的容器 通常是乙個檔案或一組檔案 注意誤用混淆 資料庫軟體被稱為dbms,資料庫是通過dbms建立和操縱的容器 模式 關於資料庫和表的布局及特性的資訊。主鍵 一列或一組列,其值能夠唯一標識表中的每一行。多條sql語句必須以 分隔。sql語句不區分大小寫,select和sele...