資料庫不用外來鍵的話通過什麼方法保證一致性呢?

時間 2021-05-06 14:25:34

1樓:收發室柳大爺

1、靠事務回滾。

2、靠維護計畫。

3、靠人肉愣刷。

非高併發業務系統,資料庫如果不是主要負載和瓶頸,對資料完整度要求高的話,可以考慮使用外來鍵、觸發器等技術手段。

普通的網際網路專案,乾脆就忘掉有外來鍵這回事吧,不然煩惱無窮,不是不好,是不划算。

設計開發人員,應該先把資料庫單純當做乙個很慢很慢的純儲存、檢索部件,功能先能實現。根據運維情況,再考慮常規優化,最後再考慮使用非常規手段優化。

啥叫非常規技術手段?所有短期培訓班不教的,都算非常規。

2樓:

單純靠外來鍵來約束一致性,這樣不妥當吧,而且你們還要適應中國式業務的需要確定可以滿足,另外維護的時候維護人員會因為這個打死開發的。

3樓:mysqlops

使用後台程式啟動事務的模式保證資料的一致性,以前使用外來鍵只是為把原本程式做的事情,改為資料庫做。

而網際網路尤其多數業務場景下,沒有必要保持這樣的資料一致性,而且通過後台程式+資料庫事務即可,同時減少外來鍵的使用,可以減少死鎖的發生概率,提高資料庫的併發處理能力。

MySQL 不用外來鍵的話,如何讓表起來關聯呢?

myhlcb 表關聯跟外來鍵是兩回事。1.使用外來鍵做表關聯只是為了保證資料一致性。但是這點完全可以通過事務解決 2.使用外來鍵在高併發情況下會造成死鎖。所以一般不建議使用外來鍵。 SevenMonths 練習的話,可以用命令列新增外來鍵,好的作用就是方便級聯操作,比如主表和從表有外來鍵關鍵,你可以...

作為乙個K V資料庫,levelDB索引為什麼要使用LSM樹實現,而不採用雜湊索引?

lxyscls 參考一下CMU15 445,磁碟上的雜湊和記憶體中的雜湊實現上不太一樣,所以不是太適合做磁碟的索引,當然bitcask其實是把雜湊索引放到記憶體裡面。 讀 有序的索引功能會豐富很多,比如levelDb可以支援snapshot read,hash的話想來只能做backup了。另外Has...

在資料庫中具體建立表結構的時候,需要建立外來鍵嗎

馮大輝 響馬等老司機在某些特定場合不用外來鍵是因為他們有能力把控業務層的設計和實現,用一定代價來換取對極端效能的追求。你同事在任何場合都不用外來鍵,只是因為智商不夠,學不會正經的關聯式資料庫。 itlr 絕大多數書庫並不需要強制引用一致性,所以絕大多數時候意義不大。當業務資料的引用一致性十分關鍵的時...