四種隔離模式主要是用來解決不同線程的事務造成的幾種問題: 1.修改丟失:兩個事務A,B對同一數據同時進行讀取與修改,出現事務B 覆蓋事務A的提交結果 2.臟讀:事務A讀到事務B修改卻未提交的數據,事務B回滾數據修改操作,導致了事務A獲得數據是臟數據(也可以理解為事務A獲取的數據與資料庫中存儲的數據是 ...
四種隔離模式主要是用來解決不同線程的事務造成的幾種問題:
1.修改丟失:兩個事務A,B對同一數據同時進行讀取與修改,出現事務B 覆蓋事務A的提交結果
2.臟讀:事務A讀到事務B修改卻未提交的數據,事務B回滾數據修改操作,導致了事務A獲得數據是臟數據(也可以理解為事務A獲取的數據與資料庫中存儲的數據是不一致的)
3.(不可重覆讀)虛讀:事務A先讀取某一行數據,事務B對改行數據進行修改,事務B再一次讀取該行數據時就會造成前後兩次讀取結果不一致。
4.幻讀:事務A讀取某段數據,事務B對其進行插入或者刪除操作時,當事務A重新讀取該段數據時會造成前後兩次查詢的數據不一致,出現第一次比第二次多或者少的現象。
為瞭解決上面的問題,出現了四種事務隔離模式
1.Read uncommitted(未授權讀取、讀未提交):(排他寫鎖)同一時間只允許一個事務進行寫操作的存在,可以允許多個事務進行讀取。可以解決(修改丟失)的問題,但是會出現臟讀,虛讀,幻讀這些問題
2.Read committed(授權讀取、讀提交):(排他寫鎖、瞬間共用讀鎖)同一時間只允許一個事務進行寫操作禁止其他事務進行讀與寫,可以解決(修改丟失,臟讀)不能解決虛讀,幻讀
3.Repeatable read(可重覆讀取):(排他寫鎖、共用讀鎖)同一時間只允許一個事務進行寫操作禁止其他事務進行讀與寫,同一時間一個事務讀取的時不允許其他事務進行寫(可以讀取)。可以解決(修改丟失,臟讀,虛讀),但不能解決幻讀。
4.序列化:事務只能一個一個按照序列來進行讀寫,這樣併發性性能不高,可以解決上面4個問題。