MySql InnoDB 的事务隔离级别

MySql InnoDB 的事务隔离级别


    未提交读(Read uncommitted)A事务修改了数据,但尚未提交,B事务中的select会读到这些未被提交的数据(脏读)。幻读,不可重复读和脏读均允许。
    已提交读(Read committed) 本事务读取到的是其他事务提交后的的数据。允许幻读和不可重复读,但不允许脏读。
    可重复读(Repeatable read) 可重复读在同一事务中,多次读取同一数据返回的结果相同。即事务A在读到一条数据之后,此时事务B对该数据进行了修改并提交,那么事务A再读该数据,读到的还是原来的内容。允许幻读,但不允许不可重复读和脏读。
    可串行化(Serializable) 以共享锁形式,可以保证不同事务间的互斥。

脏读: A事务未提交数据,B事务中的select会读到这些未被提交的数据。
不重复读: 在同一事务中,多次读取同一数据返回的结果不同。不重复读在可重复读的基础上读到的是新的内容。
幻读: A事务读到B事务已提交的insert数据。幻读是插入和删除,重复读是修改数据。Serializable可以解决幻读(不推荐),或者加临键锁。


原文地址:https://www.cnblogs.com/zyh-s/p/13253640.html