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

本文详细解释了数据库中的脏数据概念,包括其产生的原因及如何避免。脏数据是指在并发操作过程中,由于一个进程更新数据后被撤销,导致其他进程读取到的错误数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

什么是“脏”数据?

  数据库的并发操作带来的问题主要有以下三种: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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值