事務2 mysql事務,
阿新 • • 發佈:2018-11-23
mysql事務隔離級別
- 髒讀
- 事務A讀取了事務B更新的資料,然後B回滾操作,那麼A讀取到的資料是髒資料
- 不可重複讀
- 事務 A 多次讀取同一資料,事務 B 在事務A多次讀取的過程中,對資料作了更新並提交,導致事務A多次讀取同一資料時,結果 不一致。
- 幻讀
- 系統管理員A將資料庫中所有學生的成績從具體分數改為ABCDE等級,但是系統管理員B就在這個時候插入了一條具體分數的記錄,當系統管理員A改結束後發現還有一條記錄沒有改過來,就好像發生了幻覺一樣,這就叫幻讀。
事務隔離級別 | 髒讀 | 不可重複讀 | 幻讀 |
---|---|---|---|
讀未提交(read-uncommitted) | 是 | 是 | 是 |
不可重複讀(read-committed) | 否 | 是 | 是 |
可重複讀(repeatable-read) | 否 | 否 | 是 |
序列化(serializable) | 否 | 否 | 否 |
分散式事務作用
保證不同節點的資料一致性
XA分散式事務協議
2pc(兩階段遞交)
通俗理解
類似於 吃雞遊戲四排時組隊,必須所有隊員全部準備才能開
兩階段遞交過程
第一階段(準備階段)
- 事務中有兩個角色,一個是協調者,一個是參與者
- 協調者會向參與者傳送 事務準備請求
- 各個參與者會準備事務提交的相關資料,返回是否準備好了。進入第二階段
個人理解
- 試探性的提交
第二階段(提交階段)
- 如果都準備好了,則進行遞交操作,如果失敗了,則執行回滾
- 協調者會向參與者傳送提交請求
- 參與者會提交本地事務,並返回完成
- 當事務協調者收到所有的參與者提交完成,則完成分散式事務完成