一 . 四大特性
原子性
事務中的所有操作要麼全失敗要麼全成功,失敗了進行回滾,不會對數據庫數據改變。
一致性
事務中的所有操作執行之前和執行之後對數據的改變結果必須是一致的。
比如A B兩個人賬戶轉錢,總共5000元,A減少了1000,B就得增加1000.
持久性
事務中的所有操作對數據進行改變,只要提交成功,就會對數據進行永久改變,斷電或者故障也不會改變。
隔離性
事務之間的操作是互相不影響的,不同的隔離級別隔離程度也不一樣。
二 . 隔離級別
讀未提交:
不能避免 : 髒讀,不可重複讀,幻讀
讀已提交:
可避免 : 髒讀
不可避免 : 不可重複讀,幻讀
可重複讀:
可避免 : 髒讀 ,不可重複讀
不可避免 : 幻讀
串行化:
可避免:髒讀 , 不可重複讀,幻讀
三 . 髒讀 不可重複 幻讀介紹
髒讀:
A 事務沒有提交的操作被 B 事務讀取
不可重複讀:
A事務讀去一個條數據兩次,第一次讀取完之後,這條數據被B事務更改並提交,
A事務再次讀取這條數據時候發現數據和第一次不一樣。
幻讀
A事務執行一條sql進行讀取或者插入,讀取到N條或者插入成功,
這時候B事務插入一條數據,導致A事務再次讀取不是N條或者插入失敗(提示主鍵重複等)。
四 .補充
mysql默認隔離級別是 可重複讀
Oracle默認隔離級別是 讀已提交