事务 脏数据

关于脏数据
比如说,有两个用户A,B同时操作数据库,A开始了一个事务,修改了某行,但还未提交,这个时候,B开始另一个事务,读取了该行,然后A回滚了事务,即修改被取消了,那么,B读取到的那一行数据就是脏数据

上面这句话正确吗?如果事物A未提交,事物B能读到A所修改的数据吗?

如何判断A,B 是否属于同一个事物?

在PL/SQL 中先删一条数据(没有提交)紧接着在查刚才那条数据是查不到的,既然没有提交为什么会查不到呢?

希望各位能详细回答一下,小弟不胜感激。

Q:如果事物A未提交,事物B能读到A所修改的数据吗?
A:当然看不到

Q:如何判断A,B 是否属于同一个事物?
A:这个应该不用判断吧,两次连接 就是属于两个“事物”

Q:在PL/SQL 中先删一条数据(没有提交)紧接着在查刚才那条数据是查不到的,既然没有提交为什么会查不到呢?
A:因为这个是一个“事物”中,例如你在plsql developer中开启另一个窗口,就可以查到了。

“A开始了一个事务,修改了某行,但还未提交,这个时候,B开始另一个事务,读取了该行”,因为A没有提交,B读取的是A修改前的数据。没有提交的数据只有自己能查询到,其他用户是查看不到的。
建议你多看看这方面的资料吧

楼主首先要弄清楚 事务是为了保证数据完整性的 
A事务做了操作 没有提交 对B事务来说 就等于没做 获取的都是之前的数据
但是 在A事务中查询的话 查到的都是操作之后的数据
这个很好理解 你开两个sql窗口 在一个里边给一个表insert一条数据 不提交 紧接着select 有数据 但是去另一个sql窗口select 就没有数据

这个要看数据库工作在哪个隔离级别.只有在read uncommitted的时候才会出现脏读.
而oracle只支持read committed和read serialization两种,所以不会出现你说的情况.

A没有提交之前,B只能看到行修改之前的数据,这是undo表空间的作用之一:维护数据的一致性.

引用:

  楼主首先要弄清楚 事务是为了保证数据完整性的 
A事务做了操作 没有提交 对B事务来说 就等于没做 获取的都是之前的数据
但是 在A事务中查询的话 查到的都是操作之后的数据
这个很好理解 你开两个sql窗口 在一个里边给一个表insert一条数据 不提交 紧接着select 有数据 但是去另一个sql窗口select 就没有数据

+1

去查下隔离级别和脏读,不可重复读,幻读等现象的关系就明白了.

Oracle 如何设置事务隔离级别去让 B 也看到 A 正在改的那个数据?

该回复于2011-04-14 10:49:26被版主删除

A没有提交之前,B只能看到行修改之前的数据,这是undo表空间的作用之一:维护数据的一致性.

没有提交的数据只有自己看得到,并没有update到数据库。

因为他只是在内存中修改,并没有被持久化

该回复于2012-07-31 14:23:34被版主删除

在A对数据进行写操作的时候,这时候这部分数据在缓冲区有一个备份数据。没有提交的话,是不会改变的,脏数据是提交但是没有保存到磁盘的数据。

受教了

时间: 2024-08-10 00:03:49

事务 脏数据的相关文章

好记性不如烂笔头24-JAVA处理数据库事务(2) - 脏数据

读"脏"数据是指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被除撤消,而此时T1把已修改过的数据又恢复原值,T2读到的数据与数据库的数据不一致,则T2读到的数据就为"脏"数据,即不正确的数据. 脏数据在比较复杂的交互式系统中,非常常见. 1.用JAVA处理数据库事务的准备 要有一个能够访问数据库的应用.下面的示例都基于ORACLE进行. create table ffm_account( id int primary key , n

脏数据

从广义上看,脏数据是指没有进行过数据预处理而直接接收到的.处于原始状态的数据: 从狭义上看,是不符合研究要求,以及不能够对其直接进行相应的数据分析. 脏数据依据不同的分析目的有不同的定义,如在常见的数据挖掘工作中,脏数据是指不完整.含噪声.不一致的数据:而在问卷分析中,脏数据则是指不符合问卷要求的数据. 开发中: 脏数据是指源系统中的数据不在给定的范围内或对于实际业务毫无意义,或是数据格式非法,以及在源系统中存在不规范的编码和含糊的业务逻辑. 在数据库技术中,脏数据在临时更新(脏读)中产生.事务

Hibernate脏数据检查

脏数据检查:    什么是脏数据?脏数据并不是废弃和无用的数据,而是状态前后发生变化的数据.我们看下面的代码:  Transaction tx=session.beginTransaction();  User user=(User)session.load(User.class,"1");//从数据库中加载符合条件的数据  user.setName("zx");//改变了user对象的姓名属性,此时user对象成为了所谓的"脏数据"  tx.c

共享锁、排他锁、互斥锁、悲观锁、乐观锁、行锁、表锁、页面锁、不可重复读、丢失修改、读脏数据

共享锁(S锁):又称为读锁,可以查看但无法修改和删除的一种数据锁.如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排它锁.获准共享锁的事务只能读数据,不能修改数据. 共享锁下其它用户可以并发读取,查询数据.但不能修改,增加,删除数据.资源共享. 排它锁(X锁):又称为写锁.独占锁,若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁.这就保证了其他事务在T释放A上的锁之前不能再读取和修改A 互斥锁:在编程中,引入了对

服务器端二次开发标准事务保存数据

二次开发中,常常会调用平台事务保存数据,今天整理了标准格式的度量平台数据保存或SQL执行语句,格式如下:             //获取要保存数据表的表结构             Table table1 = service.GetTableStruct("default", "DELIT_TASK_LIST");             Table table2 = service.GetTableStruct("default", &qu

如何使用R语言解决可恶的脏数据

转自:http://shujuren.org/article/45.html 在数据分析过程中最头疼的应该是如何应付脏数据,脏数据的存在将会对后期的建模.挖掘等工作造成严重的错误,所以必须谨慎的处理那些脏数据. 脏数据的存在形式主要有如下几种情况: 1)缺失值 2)异常值 3)数据的不一致性 下面就跟大家侃侃如何处理这些脏数据. 一.缺失值 缺失值,顾名思义就是一种数据的遗漏,根据CRM中常见的缺失值做一个汇总: 1)会员信息缺失,如身份证号.手机号.性别.年龄等 2)消费数据缺失,如消费次数.

在ASP.NET MVC下有关上传图片脏数据的解决方案

在"在ASP.NET MVC下实现单个图片上传, 客户端服务端双重限制图片大小和格式, 服务端裁剪图片"中,已经实现了在客户端和服务端限制图片大小和格式,以及在服务端裁剪图片.但还有一个重要的话题是需要面对的,那就是图片脏数据问题. 假设用户添加产品信息,并且上传了图片,可之后用户没有点击页面上的添加按钮,这就导致上传图片成为"脏数据",存在着却一直不会被使用.解决这个问题的大致思路是: ○ 在上传图片的时候,把图片保存到一个临时文件夹,或者叫缓存文件夹○ 当用户真

Ceph剔除主机,Crushmap遗留脏数据

背景: 1. 一个集群总共有5台主机(Host11,Host12,Host13,Host14,Host16),由于资源过剩,需要剔除两台主机用于其他用途,host11-13都是monitor+node,Pool的副本数目是2.所以优先考虑剔除主机14和16 操作步骤: 1. Monitor操作,将OSD的状态设置Out 2. 登录对应OSD节点 ,停止OSD守护进程 3. Crushmap中删除OSD 4. 删除OSD的认证信息 5. 登录对应OSD节点 ,取消挂载文件系统 注意事项: 1. 由

(二)脏数据的预防及处理

(啊···我的排版好垃圾·····) 如何处理已产生的脏数据?有那么多预防脏数据产生的方法,但相信脏数据的产生还是在所难免的.脏数据一旦产生,导致的系统行为也是不可预测的,可能无足轻重,也可能暴露非常严重的缺陷.该如何应对产生的脏数据呢? 脏数据产生以后有两种存在形式,一种是已经引起某些问题被发现了,另一种是还不被人知道,不知道哪天会发生什么样的问题. 已经暴露的脏数据 首要的是对数据的快速修复,让系统恢复正常运转.对于专业的脏数据处理可以了解一下数据清洗(Data cleaning)技术.咱们