美文网首页
mysql四种事务隔离级别

mysql四种事务隔离级别

作者: 双眼皮的大眼睛 | 来源:发表于2019-10-22 21:23 被阅读0次

    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 (可串行化)

    -这是最高的隔离级别
    -它通过强制事务排序,使之不可能相互冲突。从而解决幻读的问题。简单的来说就是它是在每个数据行上加上共享锁,
    -这个事务级别可能会导致大量的超时现象和锁竞争

    相关文章

      网友评论

          本文标题:mysql四种事务隔离级别

          本文链接:https://www.haomeiwen.com/subject/xnycvctx.html