- 脏读:就是当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据苦苦中,这时,另外一个事务也访问了这个数据,然后使用了这个数据。(简而言之:读到了未提交的数据)【记忆技巧:不知道该数据是否正确,就默认该数据是错的,类比脏】
- 幻读:当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种涉及到表中的全部数据行。同时,第二个事务也修改了,这种修改是向表中插入一行新数据。那么以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好像发生了幻觉一样(简而言之:当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户在读取该范围的数据行时,会发现有新的“幻影”行。)【记忆技巧:一个事务在对数据表进行操作时,另一个事务对表中记录的条数进行了修改】
- 不可重复读:是指在一个事务内,多次读同一数据,在这个事务还没结束时,另一个事务也访问该同一数据。那么,在第一个读事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到了数据可能是不一样的。这样就发生了在一个事务内两次读到的数据是不一样的。(简而言之:对于同一数据,执行完全相同的select语句时看到的结果可能不一样。)【记忆技巧:第一次看到的和第二次看到的不一样】
个人总结:当A事务在对表进行操作时,B事务对该数据表进行了操作,A事务再对表进行操作时发生的问题。脏读是表中的数据发生变化,幻读是表的记录数发生了变化(insert、delete操作),不可重复读是数据变化,行数没变化(update操作)