Mysql 事務隔離級別
阿新 • • 發佈:2019-04-05
事務 時間 ability pan update 要素 ack iso 一致性
在MySQL的眾多存儲引擎中,只有InnoDB支持事務,所有這裏說的事務隔離級別指的是InnoDB下的事務隔離級別。
一、事務的基本要素(ACID)
- 原子性(Atomicity);事務開始後所有操作,要麽全部做完,要麽全部不做,不能停滯在中間環節。
- 一致性(Consistency):事務開始前和結束後,數據庫的完整性約束沒有被破壞。
- 隔離性(Isolation):同一時間,只允許一個事務請求同一數據,不同的事務之間彼此沒有任何幹擾。
- 持久性(Durability):事務完成後,事務對數據庫的所有更新將被保存到數據庫,不能回滾。
二、事務的並發問題
- 臟讀:事務B修改數據但未提交,事務A讀數據,然後B回滾,則A讀到的是臟數據。
- 不可重復讀:事務A第一次讀取數據,事務B修改數據提交,事務A第二次讀數據,兩次數據不一致。
- 幻讀:事務A update表的全部行,事務B插入一行,事務A就會發現表中還有未修改的行。(一般加間隙鎖)
三、MySQL事務隔離級別
事務隔離級別 | 臟讀 | 不可重復讀 | 幻讀 |
讀未提交 | 會 | 會 | 會 |
讀已提交 | 不會 | 會 | 會 |
可重復讀 | 不會 | 不會 | 會 |
串行話 | 不會 | 不會 | 不會 |
查看mysql的默認事務隔離級別“show global variables like ‘tx_isolation’; ”
四、InnoDB 行鎖模式
Innodb的行鎖模式有以下幾種:共享鎖,排他鎖,意向共享鎖(表鎖),意向排他鎖(表鎖),間隙鎖。
Mysql 事務隔離級別