1.Read uncommitted(读取未提交内容)
-所有事务都可以看到其他未提交事务的执行结果
-这种隔离级别在实际应用很少用到,因为它的性能也不比其他级别好多少
-该级别会引发的问题->脏读,读取到未提交的数据。
2.Read committed(读取提交内容)
-这是大多数数据库系统的默认隔离级别,但不是Mysql默认的
-它满足了隔离的定义,一个事务只能看见已经提交事务所做的改变
-这种隔离级别会出现的问题就是,不可重复读(Nonrepeatable Read),不可重复读意味着我们在同一个事务中执行完全相同的一条select语句时可能看到不一样的结果。导致这种原因的可能有,有一个交叉的事务有了新的commit,导致数据的改变。一个数据库被多个实例操作时,同一事务的其他实例在该实例处理其间可能会有新的commit
3.Repeatable Read(可重复读)
-这是Mysql默认的事务隔离级别
-它确保同一事务的多个实例在并发读取数据时,会看到同一的数据行
-改隔离级别会出现的问题,幻读(Phantom Read)。当用户在读取某一范围数据时,另一个事务又在该范围里插入或者删除一行数据,当用户再次读取数据时,会发现前后读取不一致,出现了幻觉。
-InnoDB和Falcon存储引擎通过多版本并发控制(MVCC,Multiversion Concurrency Control)机制解决了该问题
4.Serializable (可串行化)
-这是最高的隔离级别
-它通过强制事务排序,使之不可能相互冲突。从而解决幻读的问题。简单的来说就是它是在每个数据行上加上共享锁,
-这个事务级别可能会导致大量的超时现象和锁竞争
网友评论