(一)
@transactional(isolation = isolation.read_committed)
public object listforillusionread() catch (interruptedexception e)
list> map2 = jdbctemplate.queryforlist("select * from tao");
mapres = new hashmap();
res.put("before", map);
res.put("after", map2);
return res;
}public void updatefornorepeat ()
會話1執行listforillusionread,第一次讀
會話1sleep阻塞
會話2執行update有效會話操作
會話1第二次讀
會話1返回
], "
after
":[ ]}
結論:與理論相符,兩次讀取不一樣
(二)
@transactional(isolation = isolation.repeatable_read)
public object listforillusionread() catch (interruptedexception e)
list> map2 = jdbctemplate.queryforlist("select * from tao");
mapres = new hashmap();
res.put("before", map);
res.put("after", map2);
return res;
}public void updatefornorepeat ()
會話1執行listforillusionread,第一次讀
會話1sleep阻塞
會話2執行update有效會話操作
會話1第二次讀
會話1返回
], "
after
":[ ]}
結論:結論:與理論相符,同乙個會話的兩次讀取一樣,為修改前的
(三)
@transactional(isolation = isolation.read_committed)
public object listforillusionread() catch (interruptedexception e)
list> map2 = jdbctemplate.queryforlist("select * from tao");
mapres = new hashmap();
res.put("before", map);
res.put("after", map2);
return res;
}public void updatefornorepeat ()
public void deletefornorepeat()
會話1執行listforillusionread,第一次讀
會話1sleep阻塞
會話2執行delete有效會話操作
會話1第二次讀
會話1返回
], "
after":}
結論:與理論相符,兩次讀取不一樣
(四)
@transactional(isolation = isolation.repeatable_read)
public object listforillusionread() catch (interruptedexception e)
list> map2 = jdbctemplate.queryforlist("select * from tao");
mapres = new hashmap();
res.put("before", map);
res.put("after", map2);
return res;
}public void updatefornorepeat ()
public void deletefornorepeat()
會話1執行listforillusionread,第一次讀
會話1sleep阻塞
會話2執行delete有效會話操作
會話1第二次讀
會話1返回
], "
after
":[ ]}
結論:與理論相符,兩次讀取一樣,為刪除前的
總結:(一)
修改方 查詢方
thread a b
transcation off on(為了定義隔離級別,也為了定義為一次會話)
isolation not care read-commited
有重複讀
(二)修改方 查詢方
thread a b
transcation off on(為了定義隔離級別,也為了定義為一次會話)
isolation not care repeatable_read
無重複讀
(三)修改方 查詢方
thread a b
transcation off on(為了定義隔離級別,也為了定義為一次會話)
isolation not care read-commited
有重複讀
(四)修改方 查詢方
thread a b
transcation off on(為了定義隔離級別,也為了定義為一次會話)
isolation not care repeatable_read
隔離級別 不可重複讀 幻讀
參考資料 mysql innodb鎖介紹及不同sql語句分別加什麼樣的鎖 innodb鎖機制 mysql 一致性讀 深入研究 極客時間課程 mysql實戰45講 隔離級別總覽 下面主要講述rc和rr兩個級別 隔離性正是通過鎖機制來實現的。提到鎖就會涉及到死鎖,需要明確的是死鎖的可能性並不受隔離級別的...
MySQL事務隔離級別(髒讀,不可重複讀,幻象讀)
1.事務裡一些有問題的讀取 髒讀,不可重複讀,幻象讀 髒讀 dirty read 事務t1更新了一行記錄的內容,但是並沒有提交所做的修改。事務t2讀取更新後的行,然後t1執行回滾操作,取消了剛才所做的修改。現在t2所讀取的行就無效了。不可重複讀取 nonrepeatable read 事務t1讀取一...
mysql事務隔離級別 髒讀,不可重複讀,幻象讀
髒讀 dirty read 事務t1更新了一行記錄的內容,但是並沒有提交所做的修改。事務t2讀取更新後的行,然後t1執行回滾操作,取消了剛才所做的修改。現在t2所讀取的行就無效了。不可重複讀取 nonrepeatable read 事務t1讀取一行記錄,緊接著事務t2修改 了t1剛才讀取的那一行記錄...