有关“脏数据”的一些研究

今天在群里聊天的时候,,突然有朋友问到了“脏数据”这一个概念,以前在学习的时候,,都没接触过这个,然后去百度了一下,才明白这个概念,,大概意思是只那些过期了的数据,或者已经被改变了的原始数据。

什么是“脏”数据?

  数据库的并发操作带来的问题主要有以下三种:1)丢失更新问题;2)不一致分析问题(读了过时的数据);3)依赖于未提交更新的问题,在数据库技术中,把未提交的随后又被撤消的数据称为"脏数据"。

  通俗一点就是在几个并发进程中,当有若干个进程都用到了数据A,比如当进程1刚刚读了A数据后,进程2就对A数据进行了某种计算操作,将数据A的值改变了并保存了,此后进程1本想再次读取原A数据,结果读取的却是已经改变的A数据,这样导致进程1的数据发生了错误,就把此时进程1读取已经改变的A数据称为读“脏数据”。

举个例子:   (t1,t2)是两个进程

  t1 t2

  A: 读c=100

  c=c*2

  写回

  C:

  读c=200

  B:C恢复为100

  这样t2进程读了个脏数据

实际上,脏数据是已经提交 但是仍然还在数据缓冲区中 而且还没有写入数据文件的数据。所以提交的数据不能会滚。

这里要提醒一下,,工程上的东西很多并没有非常严格的定义,过分追求字眼有时候就走了弯路了
脏数据是个比较通俗的词,我理解由于并发,一个用户更新数据(是否提交并不重要)导致其它用户读取到的错误的数据都叫脏数据

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13994314/viewspace-1005369/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/13994314/viewspace-1005369/

你可能感兴趣的:(有关“脏数据”的一些研究)