1. 程式人生 > >Mysql 事務隔離級別

Mysql 事務隔離級別

事務 時間 ability pan update 要素 ack iso 一致性

在MySQL的眾多存儲引擎中,只有InnoDB支持事務,所有這裏說的事務隔離級別指的是InnoDB下的事務隔離級別。

一、事務的基本要素(ACID)

  1. 原子性(Atomicity);事務開始後所有操作,要麽全部做完,要麽全部不做,不能停滯在中間環節。
  2. 一致性(Consistency):事務開始前和結束後,數據庫的完整性約束沒有被破壞。
  3. 隔離性(Isolation):同一時間,只允許一個事務請求同一數據,不同的事務之間彼此沒有任何幹擾。
  4. 持久性(Durability):事務完成後,事務對數據庫的所有更新將被保存到數據庫,不能回滾。

二、事務的並發問題

  1. 臟讀:事務B修改數據但未提交,事務A讀數據,然後B回滾,則A讀到的是臟數據。
  2. 不可重復讀:事務A第一次讀取數據,事務B修改數據提交,事務A第二次讀數據,兩次數據不一致。
  3. 幻讀:事務A update表的全部行,事務B插入一行,事務A就會發現表中還有未修改的行。(一般加間隙鎖)

三、MySQL事務隔離級別

事務隔離級別 臟讀 不可重復讀 幻讀
讀未提交 會 
讀已提交 不會
可重復讀 不會 不會
串行話 不會 不會 不會

查看mysql的默認事務隔離級別“show global variables like ‘tx_isolation’; ”

四、InnoDB 行鎖模式

Innodb的行鎖模式有以下幾種:共享鎖,排他鎖,意向共享鎖(表鎖),意向排他鎖(表鎖),間隙鎖。

Mysql 事務隔離級別