什么是脏读?它如何阻碍性能问题?

时间:2014-05-29 16:41:14

标签: database performance memory ide development-environment

在我开始的职业生涯中,我已经多次听过脏读。我不知怎么理解它,但想要专家的光。

是否会降低性能问题?或者我做错了假设。请提供其特点。

提前致谢。

2 个答案:

答案 0 :(得分:0)

通常在数据库处理中,我们遇到一种情况,其中一个事务可以更改值,第二个事务可以在提交或回滚原始更改之前读取此值。这称为脏读方案,因为第一个事务总是可能回滚更改,导致第二个事务读取了无效值。

虽然您可以轻松地命令数据库禁止脏读,但由于锁定开销增加,这通常会降低应用程序的性能。禁止脏读也会导致系统并发性降低。

答案 1 :(得分:0)

是的,通过空间定义脏读是正确的。只是添加一些细节。 查询执行(从DB获取结果)以下面的方式工作,

HDD(Actual DB storage) >> Memory >> Cache >> processor

正如您可能知道的,与内存相比,HDD在性能/速度方面最慢。性能/速度增加了' x'从LHS到RHS。 所以每当从硬盘中读取结果时,它都被保存在内存/缓存中以供使用,在修改后的值没有写回磁盘但它们被保存在内存中时认为它将很快被使用,因为再次从磁盘中取出是时间只有在提交或回滚后,consume.values才会写入磁盘。

但是在提交或回滚之前,如果其他事务读取该值,则称为脏读。这允许使用比DB快的内存/缓存值,这就是它提高性能的方法。

如果您禁止脏读,那么每次处理器/数据库引擎都会从HDD中读取最慢且会导致性能下降的值,从而降低并发性。