数据库 脏读、不可重复读和幻读的区别

xiaoxiao2021-02-28  89

1.脏读 读取另外一个事务没有提交的数据 解决方法: 把事务的隔离级别调整到READ_COMMITTED

2.不可重复读 同一个事务中 两个相同的查询返回了不同的结果 在一个事务A第一次读取之后 另一个事务B对数据进行了修改并且在A之前提交 此时A第二次读取的数据和第一次不同 解决方法: 把数据库的事务隔离级别调整到REPEATABLE_READ

3.幻读

幻读的重点在于新增或者删除 同样的条件, 第1次和第2次读出来的记录数不一样

事务A先查询了数据 此时事务B又进行了增删操作并且提交 A再进行查询时发现两次查询的记录数不同就像出现了幻觉 解决方法: 数据库事务隔离级别调整到SERIALIZABLE_READ

ps: 之前不太能够分清不可重复读和幻读的区别,二者的主要区别是:

不可重复读的重点是修改 同样的条件, 你读取过的数据, 再次读取出来发现值不一样了

而幻读的重点在于新增或者删除,同样的条件, 第1次和第2次读出来的记录数不一样

转载请注明原文地址: https://www.6miu.com/read-53124.html

最新回复(0)