資料庫事務和正規化理解

2021-10-07 19:44:11 字數 968 閱讀 7204

學習自用..網上大把資料,主要為了貼上自己理解.老實說標題和內容真難對的上..以後再修改下..2023年7月23日已改

事務的acid

每項事務 的全部操作,要麼做了就成功,要麼就失敗了全部回滾,而不會存在中間狀態.回滾通過undo log來實現,(為什麼要有這個概念的,,有什麼資料庫的原子性的反例嗎),(undolog可見性todo)

資料庫的狀態要是一致的,(q:這裡說的狀態一致是什麼呢),a:資料庫的狀態的一致指的是完整性約束,完整性約束說的是資料庫不能有不規範的資料,(todo,這裡的完整性約束),很多地方寫道:資料庫的aid就是為了保證這個c的.(資料庫概論第九章一致性的定義:資料庫從乙個狀態轉移到另乙個一致性狀態,這裡的一致性指的是符合完整性約束)

這個具體定義太迷了...可以參考[如何理解資料庫事務中的一致性的概念? - 知乎 我也不再深挖了...

隔離性好理解,每個事務之間互不影響,即乙個資料庫操作的結果不能被另乙個事務干擾而導致結果錯誤,而隔離性的反例就是四種併發問題,貌似除了嚴格的鎖協議,都會多多少少有隔離性問題

標準定義是:提交的會一直存在資料庫中,不會丟失,,資料存在記憶體中是易失的,斷電則沒了,為了保證永續性,就要刷到硬碟中,,

永續性用用write ahead logging來保證,有一項即是在提交前先把redo log刷入磁碟來保證,提交的資料會被持久化到硬碟中

存資料的硬碟壞了的丟失導致丟失當然是不算的,但是這裡說的是資料庫的永續性,(網上說永續性是保證了可靠性而不是可用性是什麼意思呢)

寫redo log的話,(redo log應該是增量寫入吧?),對比直接修改資料庫,可以把隨機寫的效能優化成順序寫

(另外備份是永續性的乙個手段嗎)

網上說是為了建立冗餘較小、結構合理的資料庫,為什麼能保證呢?

1nf,列不可分

2nf,主鍵相關

3nf,直接相關,沒有傳遞依賴

跟面試官侃半小時mysql事務,說完原子性、一致性、永續性的實現 - 阿丸的文章 - 知乎

資料庫 正規化和事務

所謂第一正規化 1nf 是指資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重複的屬性。如果出現重複的屬性,就可能需要定義乙個新的實體,新的實體由重複的屬性構成,新實體與原實體之間為一對多關係。在第一正規化 1nf 中表的每一行只包含乙個例項的...

資料庫正規化理解

當前我們使用的主流資料庫是關係型資料庫,所以我是記錄在關係型資料庫中對正規化的一些理解和看法。資料庫庫正規化分為六種 其實還有有乙個bcnf 分別為從第一正規化到第六正規化。高階一層是建立在所有低層的基礎上的,如第2正規化是建立在第一正規化的基礎上的,依次類推。下面分別舉例講解各種正規化 第一正規化...

mysql資料庫的正規化 理解資料庫正規化

第一正規化 1nf 第一正規化的核心描述為 資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多個值。該正規化講的是列的原子性。有兩層意思 一層是說每一列只能存乙個屬性值 如果把2個屬性值存在1列中 第二層說的是在一張表中屬性值不能重複。在現代關係行資料庫中,都是預設滿足第一正規化的,所以你想...