一种解决数据传输中防并发脏读方法与流程

文档序号:12271090阅读:256来源:国知局
本发明涉及数据传输保障技术,尤其涉及一种解决数据传输中防并发脏读方法。通过一种更可靠、更高效的技术,保证数据传递的准确性与高效性,使得数据不被多线程重复传输。
背景技术
:在业界存在大量的系统之间数据传输、数据对接的应用场景。对于多线程情况下的防止数据“重复读”、“重复传输”方面,一般都是采用数据库的事务隔离来实现。事务的隔离级别可以做到避免脏读、未提交读、不可重复读和幻读。但是事务隔离级别越高,对性能的影响也会越大。在资金支付业务下、尤其是每日几十万笔支付请求的情况下,要求数据必须快速、准确、无重复的被传输。如果处理比好,轻的造成数据传输效率低下而满足不了业务处理需要,严重的情况会造成重复付款,给用户带来直接的经济损失。技术实现要素:为了解决该问题,本发明提出了一种解决数据传输中防并发脏读方法。发明即对该种情况进行了深入分析后,提出的处理机制,能够保证系统之间数据传递时,更加的准确(指不重复)、高效。主要通过以下步骤完成:1、多线程下数据读取后立即锁定每个线程在数据库中取出符合条件的数据(一般是传输状态为未传输、传输失败的情况,以及数据锁定字段没有“线程唯一码”)。数据读取后立即将该线程的唯一码更新到数据锁定字段上。注意:此处在更新锁定字段的时间间歇,有可能被另一线程读取。本实现机制是允许此类情况发生的,因为后面步骤会进一步过滤掉。2、在数据正式开始传输前再根据线程唯一码获取一遍数据根据第1步中更新的“线程唯一码”,获取真正能够被该线程传输的数据。主要目的是排除从线程读取到锁定期间被其他线程再次读取的情况。3、数据传输根据2中获取到的允许被该线程传输的数据,执行传输处理逻辑。4、数据传输完毕数据传输完毕后,一方面需要更新相应记录的“传输状态”,另一方面需要将相应记录的数据锁定字段的值清空。本发明的有益效果是在多线程读取并传输同一组数据时,不会出现多次读取及多次传输而导致的数据重复性问题;读取数据后立即加上“线程唯一码”;传输数据前再次根据唯一码获取一遍数据,进一步防止因并发而导致的重复性可能;类似于先到先得的原则。多线程并发的情况下,数据传输更加高效;多线程之间数据读取,因省略了“事务隔离控制”的方式,所以数据读取与处理性能更高;采用“线程唯一码”锁定数据的方式,能够保证数据不被重复传输。附图说明图1是本发明的实现逻辑图。具体实施方式下面对本发明的内容进行更加详细的阐述:一种解决数据传输中防并发脏读方法包括以下内容和步骤:A、系统数据传输流程,如附图1所示。B、下面是解决数据传输中防并发脏读技术的实现方法。1、读取待传输的数据。关键字定义表字段编号字段名称字段类型说明dataID单据IDVarchar(36)当前单据IDsyncField占用字段Varchar(36)当前记录的加锁字段部分逻辑处理如下:2、锁定第1步读取的数据。部分处理逻辑如下:3、数据校验完毕后,在正式传输前需要根据第二步中的guid码再次获取待传输数据。4、数据传输完毕后,根据传输的结果来更新数据传输状态、清空已写入的线程唯一码。代码略。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1