幻读和不可重复读都是数据库中的并发控制问题,但它们的区别在于:
1. 不可重复读是指在同一务中,多次读取同一数据,但由于其他事务的修改,每次读取的结果不同。例如,事务A读取了行数据,然后事务B修改了该行数据,事务A再次读取该行数据时,发现数据已经发生了变化。这种情况下,事务A就遇到不可重复读的问题。
2. 幻读是指在同一事务中,多次执行同查询,但由于其他事务的插入删除操作,每次查询返回的结果集不同。例如,事务A执行了一个查询,返回了一些行,然后事务B插入了一些新行,事务A再次执行相同的查询时,发现结果集中出现了新行,这种情况下,事务A就遇到了幻读的问题。
因此,不可重复读是针对同一数据的修改,幻读是针对数据集合的修改。