資料庫隔離級別

2021-06-21 09:10:31 字數 698 閱讀 6245

read uncommited  (讀未提交) 

最低級別,可讀取未提交事物的資料,這會導致髒讀,比如:某時刻會話a修改了乙個資料,但還未提交,此時會話b,讀取了該資料,這是,會話a回滾了事物,這就導致資料出現了不一致狀態,這就是髒讀! 

read commited    (提交讀)

避免了髒讀,但會導致不可重複讀,例如:某時刻會話a的乙個事物裡查詢乙個資料,得到的資料是1,這是會話b修改了該資料的值為2,並提交了,此時會話a的事物有要讀取該資料,這是的資料是2,就樣就出現了同乙個事務內,讀的結果不一樣,這就是不可重複讀。(oracle和ms-sql預設的等級都是這個)

repeatable read  (可重複讀)

mysql innodb儲存引擎的預設事務隔離級別,解決了不可重複讀的問題,但可能會出現幻讀;幻讀就是當乙個事務在讀取某一範圍資料行的過程中,另乙個事務對資料進行了insert操作,當使用者再次讀取的時候,就會發現新的幻影行。對於幻讀,innodb 儲存引擎通過多版本併發控制(mvcc)有效解決了幻讀現象

serializable     (可序列化)

最高隔離級別,對事務進行強制排序。使事務之間不產生衝突,從而解決幻讀現象,在這個級別下,資料庫的併發能力大大受限,在serializable 下,每個讀的資料行都要加鎖。

總結:隔離級別越低,事務的併發能力越好,但也可能會損害資料的一致性。

隔離級別越高,事務的併發能力越差!

資料庫隔離級別

資料庫事務的隔離級別有4個,由低到高依次為read uncommitted read committed repeatable read serializable,這四個級別可以逐個解決髒讀 不可重複讀 幻讀這幾類問題。可能出現 不會出現 髒讀 不可重複讀 幻讀read uncommitted re...

資料庫隔離級別

資料庫事務的隔離級別有4個,由低到高依次為read uncommitted read committed repeatable read serializable,這四個級別可以逐個解決髒讀 不可重複讀 幻讀這幾類問題。可能出現 不會出現 髒讀不可重複讀 幻讀read uncommitted rea...

資料庫隔離級別

資料庫事務的隔離級別有4個,由低到高依次為read uncommitted read committed repeatable read serializable,這四個級別可以逐個解決髒讀 不可重複讀 幻讀這幾類問題。可能出現 不會出現 髒讀不可重複讀 幻讀read uncommitted rea...