Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 什么是脏书?它是如何阻碍性能问题的?_Database_Performance_Memory_Ide_Development Environment - Fatal编程技术网

Database 什么是脏书?它是如何阻碍性能问题的?

Database 什么是脏书?它是如何阻碍性能问题的?,database,performance,memory,ide,development-environment,Database,Performance,Memory,Ide,Development Environment,在我开始发展的职业生涯中,我听过很多次“肮脏”这个词。我不知怎么地理解它,但想让专家了解它 它是否减少了性能问题?或者我做了错误的假设。请同时提供其特点 提前感谢。在数据库处理中,我们经常遇到这样的情况:一个事务可以更改一个值,而第二个事务可以在提交或回滚原始更改之前读取该值。这被称为脏读场景,因为第一个事务总是有可能回滚更改,导致第二个事务读取了无效值 虽然您可以轻松地命令数据库禁止脏读,但这通常会由于增加的锁定开销而降低应用程序的性能。不允许脏读也会导致系统并发性降低。是的,Venget对脏

在我开始发展的职业生涯中,我听过很多次“肮脏”这个词。我不知怎么地理解它,但想让专家了解它

它是否减少了性能问题?或者我做了错误的假设。请同时提供其特点


提前感谢。

在数据库处理中,我们经常遇到这样的情况:一个事务可以更改一个值,而第二个事务可以在提交或回滚原始更改之前读取该值。这被称为脏读场景,因为第一个事务总是有可能回滚更改,导致第二个事务读取了无效值


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

是的,Venget对脏读的定义是正确的。只是增加了一些细节。 查询执行(从数据库获取结果)的工作方式如下:

HDD(Actual DB storage) >> Memory >> Cache >> processor
您可能知道,与内存相比,HDD的性能/速度最慢。从左侧到右侧,性能/速度以“x”为单位增加。 因此,每次从硬盘读取结果时,都会将其保存在内存/缓存中以供使用,修改后的值不会写回磁盘,但它们会保存在内存中,并认为从磁盘再次提取很耗时。只有在提交或回滚后,才会将值写入磁盘

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

如果您不允许脏读,那么每次处理器/db引擎都会从最慢的HDD读取值,这会降低性能,降低并发性