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数据