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