資料庫的事務隔離級別

2021-07-01 18:15:36 字數 942 閱讀 5511

1.read uncommited

別人沒commit的操作也能查到

2.read commited

別人commit了的操作才能查到

但是在同乙個事務裡面如果兩次查詢的中間資料被其他人修改則查到的結果不一樣

例,場景1:

begin work

查詢1:select b from test_table where a=1;

#返回b=1

#此時如果另乙個人修改了b的值如:update test_table set b=2 where a=1;

#下面同樣的查詢在返回的結果不再是1,而是修改後的值:2

查詢2:select b from test_table where a=1;

#返回b=2

end work 

3.repeatable read

這種級別可以保證「場景1」.查詢2的結果和查詢1一樣

但是在下面場景,會出現幻讀:

例,場景2:

begin work

查詢1:select b from test_table where a>1;

#返回rec1:b=2 

rec2:b=3

#此時如果另乙個人修改了b的值如:insert into test_table (a,b) values(4,4);

查詢2:select b from test_table where a>1;

#返回rec1:b=2 

rec2:b=3

rec3:b=4

end work 

可見repeatable read隔離級別只能

鎖定指定記錄,同一事務中讀取過的記錄,多次讀取結果一致

但是不能鎖定乙個範圍內的資料不發生變化

4.serializable

最高端別,鎖定記錄範圍,同一事務中,查詢同一範圍的資料不會有變化

資料庫事務隔離級別

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

資料庫事務隔離級別

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

資料庫事務隔離級別

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