什么叫脏读(dirty read)(20分)

  • 主题发起人 主题发起人 卞志强
  • 开始时间 开始时间

卞志强

Unregistered / Unconfirmed
GUEST, unregistred user!
最近看一个delphi的例子(delphi4/help/samples/UPDATE)
例子本身用的是ibLocal database
可我把它改成dbdemos就不行了
说本地数据库只能脏读
不明白到底是什么意思
还望大虾们指点
是不脏读就是只能由一个用户使用数据库的方法
 
随便找一本数据库原理方面的书看一下就知道了。
 
http://member.netease.com/~bnm/delphi/Delphi4.zip
《Delphi4 核心编程技术》这本书虽然不好,但你要的答案就在里面,比较清楚。
 
由于数据库共享问题,读出的数据与数据库
真实数据可能不一直
 
所谓Dirty Read是指读取了还没有提交的数据。如果数据被RollBack的话,
所读取的东西就是无效的
 
所谓脏读是因为数据库的共享造成的。
在网络上,如果有用户在修改数据库,如Insert、Update、Delete等等
那么数据库系统会锁住这个页面,页面的大小视数据库系统而定。但同时,又
有用户去读这个表,并且位置恰好在这个页面中,这时候数据库系统就会让他
等待,直到上一个用户的操作完成。这样就造成了数据库阻塞。
但有时候用户查询记录只是为了看看而已,没什么重要性,这时候就可以
使用脏读,说白了,就是让数据库系统强制读,并返回记录。这时候返回的记
录有可能就是不正确的,这就叫脏读。
在Delphi中,可以使用Query1.sql.Text:='Select * From 表 (NoLock)';
就可以实现脏读。
打字好累呀,不过多劳多得嘛。
 
一个交易可能会读到其他交易正在修改的数据库
 
多人接受答案了。
 
后退
顶部