一文講清MySQL四種隔離級別


mysql事務隔離級別

serializable 串行化(無問題)

# 事務必須以順序的方式執行,前一個事務提交之前后面的事務無法進行提交,最安全,但是不能並發操作,導致效率低下.

repeatab read 可重復讀(默認隔離級別)(幻讀)

# 在一個事務未提交之前,里面不論執行多少次查詢,查詢的結果都一樣(即使這條記錄被別的事務修改過)但是可能會出現幻讀

image-20211021153618615

read committed 讀已提交(不可重復度,幻讀)

# 在當前事務中別的事務提交的數據可以看到,那么可能會導致不可重復讀(另一個線程提交數據后當前線程可以看到,然后就會導致前后兩次同一條sql查詢出來的結果不一樣(對比可重復讀)).
# 也可能出現幻讀
	user1查詢wangwu是沒有的,然后user2開啟事務並且插入wangwu但是不提交數據,user1再次查詢還是沒有的,執行插入wangwu操作,但是執行失敗,明明wangw不存在但是無法插入,出現幻讀.

read uncommitted 讀未提交(幻讀,不可重復讀,臟讀)

# 當前事務會讀到其他事務未提交的數據,萬一其他事務集中回滾,那么當前事務讀取的數據是不合法的,稱為臟讀.
# 出現不可重復讀:其他事務提交的修改會被當前事務感知到,從而查詢出來的結果都是不一樣的.
# 出現幻讀:首先user1查詢wangwu不存在,user2開啟事務並且插入wangwu但是不提交事務,此時user1查詢到wangwu存在,執行deletewangwu操作是失敗的,明明查詢到了wangwu但是無法刪除?

image-20211021160901081

image-20211021160950828


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM