天天看點

Mysql事務隔離級别

SQL 标準定義了四種隔離級别,MySQL 全都支援。這四種隔離級别分别是:

  • 讀未送出(READ UNCOMMITTED)
  • 讀送出 (READ COMMITTED)
  • 可重複讀 (REPEATABLE READ)
  • 串行化 (SERIALIZABLE)

MySQL InnoDB 引擎才支援事務,MyISAM 引擎是不支援事務。

讀送出是大多數流行資料庫的預設事務隔離級别,如 Oracle,但不是 MySQL 的預設隔離界别;MySQL預設的隔離級别可重複讀、。

讀未送出和串行化基本上是不需要考慮的隔離級别,前者不加鎖限制,後者相當于單線程執行,效率太差。

讀送出解決了髒讀問題,行鎖解決了并發更新的問題。

MySQL 在可重複讀級别解決了幻讀問題,是通過行鎖和間隙鎖的組合 Next-Key 鎖實作的。