MySQL InnoDB 四種事務隔離級別

InnoDB默認是可重複讀的(REPEATABLE READ)mysql

修改全局默認的事務級別,在my.inf文件的[mysqld]節裏相似以下設置該選項(不推薦)sql

transaction-isolation = {READ-UNCOMMITTED | READ-COMMITTED | REPEATABLE-READ | SERIALIZABLE}session

改變單個會話或者全部新進鏈接的隔離級別(推薦使用)事務

SET [SESSION | GLOBAL] TRANSACTION ISOLATION LEVEL {READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE}it

查詢全局和會話事務隔離級別方法io

#查詢全局的事務隔離級別 SELECT @@global.tx_isolation; #查詢當前會話的事務級別 SELECT @@session.tx_isolation;table

四種隔離級別說明方法

隔離級別 髒讀(Dirty Read) 不可重複讀(NonRepeatable Read) 幻讀(Phantom Read) 未提交讀(Read uncommitted) 可能 可能 可能 已提交讀(Read committed) 不可能 可能 可能 可重複讀(Repeatable read) 不可能 不可能 可能 可串行化(SERIALIZABLE) 不可能 不可能 不可能 髒讀 :一個事務讀取到另外一事務未提交的更新數據數據

不可重複讀 : 在同一事務中,屢次讀取同一數據返回的結果有所不一樣, 換句話說, 後續讀取能夠讀到另外一事務已提交的更新數據. 相反, 「可重複讀」在同一事務中屢次讀取數據時, 可以保證所讀數據同樣, 也就是後續讀取不能讀到另外一事務已提交的更新數據。查詢

幻讀 :一個事務讀到另外一個事務已提交的insert數據

相關文章
相關標籤/搜索