oracle多线程读写同一字段的问题,结果总是出错 我的程序采用多线程入库,在入库过程中需要对同一个状态字进行修改,以判断入库情况,以后读取这个状态字即可知道哪 个需要入库,哪个不需要。经过多次的试验,对这个状态字的修改总是出问题,很多时候状态字就没有更新,估计可能是多线程在同时读写那个字段时,导致的脏数据,请问这种现象如何解决。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用 for update 行锁锁住你要的那些行? 多线程不是很清楚,就数据库写入这块做下说明: 当对一个表进行修改时,数据库内存会采用排他锁的机制,这时表只能有由一个用户来进行写操作。 这个按楼主的意思,应该是楼主的一个线程来进行,也就是说,在同一时刻,对表只能由一个线程来进行写入。 所以在写入这块采用多线程意义不大.------------------------------------------------------------------------------ Blog: http://blog.csdn.net/tianlesoftware 网上资源: http://tianlesoftware.download.csdn.net 相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx Q Q 群:62697716 oracle多想成不明白,以后还待深入学习! for update也是不管用的,就是当多个线程同时读取了一个时刻的状态字,而其中一个线程快速把它给更改了, 第二个线程又要在原来读取的基础上再改,导致前一个进程改写的状态丢失,带来错误;还有就是一个线程在改,锁定了某行,而其它线程在等待,超时后退出,状态字还是未得到完全更改,同样带来错误。实在没法了。 建议lz另外加个表tblstatus,表里有个字段flag 0 为可以操作,1为不可以操作每个线程在操作表之前查看tblstatus 的flag状态。如果为1的话马上flag状态更改了。然后再操作你要修改的表。表修改完再将tblstatus表中flag的状态改为0。 不知道楼主的问题最后怎么解决的,我现在也遇到oracle多线程编程的问题了,我的qq希望能请教一下你 oracle中如何将NULL插入到DateTime类型的字段中。 索引为什么能提高搜索速度 请高人回答 单列字符串合并成以逗号连接的一行 那位高手帮小弟看一下那里错了!存储过程 求一个貌似简单但一时想不出来怎么写的delete语句??? 请问怎样从oracle导出表数据? oracle有无什么工具,可以记录应用程序提交的sql语句,类似于sqlserver中的事件探测器? 急问,在线等! oracle数据库中 表的主关键字 存储在系统的什么地方? 求救啊!!!! 查询结果问题啊 oracle的查病毒问题 DBMS_OUTPUT的FLUSH问题 OraOLEDB (0x80004005) 求解
用 for update 行锁锁住你要的那些行?
多线程不是很清楚,就数据库写入这块做下说明: 当对一个表进行修改时,数据库内存会采用排他锁的机制,这时表只能有由一个用户来进行写操作。 这个按楼主的意思,应该是楼主的一个线程来进行,也就是说,在同一时刻,对表只能由一个线程来进行写入。 所以在写入这块采用多线程意义不大.------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
网上资源: http://tianlesoftware.download.csdn.net
相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
Q Q 群:62697716
实在没法了。
每个线程在操作表之前查看tblstatus 的flag状态。如果为1的话马上flag状态更改了。然后再操作你要修改的表。表修改完再将tblstatus表中flag的状态改为0。