select @@global.tx_isolation,@@tx_isolation;mysql
set global tx_isolation='read-uncommitted';sql
1.全局修改,修改mysql.ini配置文件,在最後加上session
1 #可選參數有:READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE. 2 [mysqld] 3 transaction-isolation = REPEATABLE-READ 這裏全局默認是REPEATABLE-READ,其實MySQL原本默認也是這個級別ui
2.對當前session修改,在登陸mysql客戶端後,執行命令:.net
set session transaction isolation level read uncommitted;blog
要記住mysql有一個autocommit參數,默認是on,他的做用是每一條單獨的查詢都是一個事務,而且自動開始,自動提交(執行完之後就自動結束了,若是你要適用select for update,而不手動調用 start transaction,這個for update的行鎖機制等於沒用,由於行鎖在自動提交後就釋放了),因此事務隔離級別和鎖機制即便你不顯式調用start transaction,這種機制在單獨的一條查詢語句中也是適用的,分析鎖的運做的時候必定要注意這一點事務
SHOW GLOBAL VARIABLES LIKE '%timeout%' SET GLOBAL wait_timeout=10000get
可重複讀: 不少文章裏都說 RR 級別是事務開啓時就不容許其餘事務修改活動記錄了,其實並無阻塞,T1讀取A記錄,此時T1也開啓了持續讀A記錄,T2此時是能夠修改A記錄並提交的,但T1是讀取不到T2的提交後的結果的,只有T1提交後再開啓新事務,當前會話才能讀取到T2的結果it
ref-> http://www.javashuo.com/article/p-ehczcmbm-dw.html https://blog.csdn.net/hjl_168562/article/details/17488055 https://blog.csdn.net/bluishglc/article/details/5626009io