数据库中的脏读、幻读、不可重复读是什么?
数据库在运行过程中会出现一些问题,脏读、幻读、不可重复读是经典的几种情况。他们的概念如下:
- 脏读(针对未提交的数据):脏读是指一个事务读取到了另外一个事务未提交的数据。
- 不可重复读(针对数据的内容):不可重复读是指同一事务对于同一条数据前后读取不一致,例如,事务A开始执行,获取到数据值为100,在此期间事务B修改了数据值为80,在事务A再次获取该数据时,获取到的数据变成了80,称为不可重复读。
- 幻读(针对数据数量):幻读是一个事务读取到的数据量前后发生变化,例如,事务A开始执行,获取到数据量为20条,在此期间事务B执行,删除了4条数据,此时事务A再次读取,获取到16条数据,事务A前后获取到的数据量不相同,就是幻读。
数据库中的脏读、幻读和不可重复读问题,可以通过设置不同的隔离级别来解决。有关Mysql隔离级别内容见:[Mysql隔离级别]()