數據庫事務,事務的隔離級別

事務(TRANSACTION)是作爲單個邏輯工作單元執行的一系列操作,這些操作作爲一個整體一起向系統提交,要麼都執行、要麼都不執行 。事務是一個不可分割的工作邏輯單元。

事務必須具備以下四個屬性,簡稱 ACID 屬性
原子性(Atomicity)
1. 事務是一個完整的操作。事務的各步操作是不可分的(原子的);要麼都執行,要麼都不執行。
一致性(Consistency)
2. 當事務完成時,數據必須處於一致狀態。
隔離性(Isolation)
3. 對數據進行修改的所有併發事務是彼此隔離的,這表明事務必須是獨立的,它不應以任何方式依賴於或影響其他事務。
永久性(Durability)
4. 事務完成後,它對數據庫的修改被永久保持,事務日誌能夠保持事務的永久性。


事務的隔離級別

讀未提交(Read Uncommitted):最低的隔離級別,允許讀取尚未提交的數據變更,可能會導致髒讀、幻讀或不可重複讀。

讀已提交(Read Committed):允許讀取併發事務已經提交的數據,可以阻止髒讀,但是幻讀或不可重複讀仍有可能發生。

可重複讀(Repeated Read):對同一字段的多次讀取結果都是一致的,除非數據是被本身事務自己所修改,可以阻止髒讀和不可重複讀,但幻讀仍有可能發生。

串行化(Serializable):最高的隔離級別,完全服從ACID的隔離級別。所有的事務依次逐個執行,這樣事務之間就完全不可能產生干擾,也就是說,該級別可以防止髒讀、不可重複讀以及幻讀。


髒讀即爲事務1第一次讀取時,讀到了事務2未提交的數據。若事務2回滾,則事務1第二次讀取時,讀到了髒數據。

不可重複讀與髒讀邏輯類似。主要在於事務2在事務1第二次讀取時,提交了數據。導致事務1前後兩次讀取的數據不一致。

幻讀就是說事務1第二次查詢時,讀到了事務2提交的數據。不可重複讀針對的是值的不同,幻讀指的是數據條數的不同。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章