瀏覽分類:

MySQL

MySQL InnoDB四個交易(Transaction)級別

MySQL InnoDB交易的隔離級別有四級,默認是“可重複讀”(REPEATABLE READ)

  1. 未提交讀(Read Uncommitted)
    另一個交易修改了數據,但尚未提交,而本交易中的SELECT會讀到這些未被提交的數據髒讀(Dirty read)( 隔離級別最低,並發性能高 )。
  2. 提交讀(Read Committed)
    本交易讀取到的是最新的數據(其他交易提交後的)。
    狀況是,在同一個交易裡,前後兩次相同的SELECT會讀到不同的結果不重複讀(Don’t repeat)
    會出現不重複讀(Don’t repeat)幻讀(Phantom read)問題(鎖定正在讀取的行)
  3. 可重複讀(Repeatable Read)
    在同一個交易裡,SELECT的結果是交易開始時時間點的狀態,因此,同樣的SELECT操作讀到的結果會是一致的。但是,會有幻讀(Phantom read)現象(稍後解釋)。會出幻讀(Phantom read)(鎖定所讀取的所有行)。
  4. 串行化(Serializable)
    讀操作會隱式獲取共享鎖,可以保證不同交易間的互斥(鎖表)。

閱讀更多