MySQL 知识 -- 事物隔离级别以及会导致的问题

本文最后更新于:6 分钟前

事物的隔离级别

  1. 读未提交 (Read Uncommitted)

    读到未提交的事务的数据,造成脏读的问题

  2. 读已提交 (Read committed)

    读到已提交事务的数据,但是如果这个事务内多次读的话,会造成读到的数据不一致的情况,造成不可重复读的问题

  3. 重复读 (Repeatable read)

    读不到已提交事务的数据,但是会出现数据不一致的情况

  4. 串行化 (Serializable)

    直接锁表,此时只能一个事务进行操作

事务可能出现的问题

  1. 脏读

    脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后读到了这个修改后的数据

  2. 不可重复读

    是指在一个事务内,多次读同一数据.在这个事务还没有结束时,另外一个事务也访问该同一数据并完成修改

    那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的的数据可能是不一样的.这样就发生了在一个事务内两次读到的数据是不一样的,因此称为是不可重复读(即不能读到相同的数据内容)

  3. 幻读

    是指当事务不是独立执行时发生的一种现象

    例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行.同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据.那么就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象发生了幻觉一样