關於事務的隔離級別
先對不一樣隔離級別涉及到的名詞解釋:
• 髒讀: 對於兩個事物 T一、T2,T1 讀取了已經被 T2 更新但尚未被提交的字段。以後, 若 T2 回滾,T1讀取的內容就是臨時且無效的。
• 不可重複讀: 對於兩個事物 T一、T2, T1 讀取了一個字段, 而後 T2 更新了該字段。 以後, T1再次讀取同一個字段, 值就不一樣了。
• 幻讀: 對於兩個事物 T一、T2, T1 從一個表中讀取了一個字段, 而後 T2 在該表中插入了一些新的行。 若是 T1 再次讀取同一個表, 就會多出數據sql
具體的隔離級別定義:
- READ UNCOMMITTED(讀未提交數據) :容許事務讀取未被其餘事務提交的變動,髒讀、不可重複讀和幻讀的問題都會出現
- READ COMMITED(讀已提交數據) :只容許事務讀取已經被其餘事務提交的變動,能夠避免髒讀,但不可重複讀和幻讀問題仍然會出現
- REPEATABLE READ(可重複讀) :確保事務能夠屢次從一個字段中讀取相同的值,在這個事務持續期間,禁止其餘事務對這個字段進行更新,能夠避免髒讀和不可重複讀,但幻讀的問題依然存在
- SERIALIZABLE(串行化) :確保事務能夠從一個表中讀取相同的行,在這個事務持續期間,禁止其餘事務對該表執行插入、更新和刪除操做,全部併發問題均可以免,但性能十分低
Oracle
默認的事務隔離級別爲: READ COMMITED(讀已提交數據)
Mysql
默認的事務隔離級別爲: REPEATABLE READ(可重複讀)併發
做者:ChinaXieShuai 連接:https://www.jianshu.com/p/6b275553b54f 來源:簡書 簡書著做權歸做者全部,任何形式的轉載都請聯繫做者得到受權並註明出處。