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數據