資料庫隔離級別的本質解釋

2021-07-26 13:48:35 字數 478 閱讀 9749

先解釋讀以提交和讀未提交的區別:

我剛很多朋友對讀未提交和讀已提交總是分不清楚,我這裡話乙個圖,本質的解釋下:

ab是兩個事物,i是乙個資料值,箭頭是時間抽,紅圈是b的事物

當a第一次讀i的值是1,那麼當a在後面b事物操作i這期間能訪問i,這叫讀未提交,當a後面只能等到b事物結束之後訪問i叫讀以提交 ,聰明的朋友一定會發現這裡面的區別在於,讀以提交是當有乙個讀操作時,可以同時讀寫, 讀未提交是當有乙個寫操作時可以同時讀但不能寫。

其實資料庫就只有四種可能的操作,分別是:讀讀,讀寫,寫讀,寫寫。而隔離級別其實就是分別針對這四種情況來劃分梯度的

所謂的隔離級別就是依次減小鎖得顆粒度,分別是:

序列化:表級鎖

可重複讀:行級讀寫鎖

讀已提交:行級讀鎖

讀未提交:行級寫鎖

資料庫隔離級別

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

資料庫隔離級別

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

資料庫隔離級別

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