CN106445703A - 一种解决数据传输中防并发脏读方法 - Google Patents
一种解决数据传输中防并发脏读方法 Download PDFInfo
- Publication number
- CN106445703A CN106445703A CN201610842168.6A CN201610842168A CN106445703A CN 106445703 A CN106445703 A CN 106445703A CN 201610842168 A CN201610842168 A CN 201610842168A CN 106445703 A CN106445703 A CN 106445703A
- Authority
- CN
- China
- Prior art keywords
- data
- thread
- data transmission
- transmission
- data transfer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/004—Error avoidance
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种解决数据传输中防并发脏读方法,属于数据传输保障技术,本发明包括多线程下数据读取后立即锁定;在数据正式开始传输前再根据线程唯一码获取一遍数据;数据传输;数据传输完毕。本发明实现了在系统间多线程传输数据的情况下,数据准确、无重复的保障机制。接口无需采用事务隔离机制,而是通过不同线程对数据增加独占标记、传输、传输完毕后释放独占标记的机制来实现。
Description
技术领域
本发明涉及数据传输保障技术,尤其涉及一种解决数据传输中防并发脏读方法。通过一种更可靠、更高效的技术,保证数据传递的准确性与高效性,使得数据不被多线程重复传输。
背景技术
在业界存在大量的系统之间数据传输、数据对接的应用场景。对于多线程情况下的防止数据“重复读”、“重复传输”方面,一般都是采用数据库的事务隔离来实现。事务的隔离级别可以做到避免脏读、未提交读、不可重复读和幻读。但是事务隔离级别越高,对性能的影响也会越大。
在资金支付业务下、尤其是每日几十万笔支付请求的情况下,要求数据必须快速、准确、无重复的被传输。如果处理比好,轻的造成数据传输效率低下而满足不了业务处理需要,严重的情况会造成重复付款,给用户带来直接的经济损失。
发明内容
为了解决该问题,本发明提出了一种解决数据传输中防并发脏读方法。发明即对该种情况进行了深入分析后,提出的处理机制,能够保证系统之间数据传递时,更加的准确(指不重复)、高效。
主要通过以下步骤完成:
1、多线程下数据读取后立即锁定
每个线程在数据库中取出符合条件的数据(一般是传输状态为未传输、传输失败的情况,以及数据锁定字段没有“线程唯一码”)。数据读取后立即将该线程的唯一码更新到数据锁定字段上。
注意:此处在更新锁定字段的时间间歇,有可能被另一线程读取。本实现机制是允许此类情况发生的,因为后面步骤会进一步过滤掉。
2、在数据正式开始传输前再根据线程唯一码获取一遍数据
根据第1步中更新的“线程唯一码”,获取真正能够被该线程传输的数据。主要目的是排除从线程读取到锁定期间被其他线程再次读取的情况。
3、数据传输
根据2中获取到的允许被该线程传输的数据,执行传输处理逻辑。
4、数据传输完毕
数据传输完毕后,一方面需要更新相应记录的“传输状态”,另一方面需要将相应记录的数据锁定字段的值清空。
本发明的有益效果是
在多线程读取并传输同一组数据时,不会出现多次读取及多次传输而导致的数据重复性问题;
读取数据后立即加上“线程唯一码”;
传输数据前再次根据唯一码获取一遍数据,进一步防止因并发而导致的重复性可能;
类似于先到先得的原则。
多线程并发的情况下,数据传输更加高效;
多线程之间数据读取,因省略了“事务隔离控制”的方式,所以数据读取与处理性能更高;
采用“线程唯一码”锁定数据的方式,能够保证数据不被重复传输。
附图说明
图1是本发明的实现逻辑图。
具体实施方式
下面对本发明的内容进行更加详细的阐述:
一种解决数据传输中防并发脏读方法包括以下内容和步骤:
A、系统数据传输流程,如附图1所示。
B、下面是解决数据传输中防并发脏读技术的实现方法。
1、读取待传输的数据。
关键字定义表
字段编号 | 字段名称 | 字段类型 | 说明 |
dataID | 单据ID | Varchar(36) | 当前单据ID |
syncField | 占用字段 | Varchar(36) | 当前记录的加锁字段 |
部分逻辑处理如下:
2、锁定第1步读取的数据。
部分处理逻辑如下:
3、数据校验完毕后,在正式传输前需要根据第二步中的guid码再次获取待传输数据。
4、数据传输完毕后,根据传输的结果来更新数据传输状态、清空已写入的线程唯一码。代码略。
Claims (3)
1.一种解决数据传输中防并发脏读方法,其特征在于,
包括以下步骤:
1)多线程下数据读取后立即锁定
每个线程在数据库中取出符合条件的数据;数据读取后立即将该线程的唯一码更新到数据锁定字段上;
2)在数据正式开始传输前再根据线程唯一码获取一遍数据;
3)数据传输
根据步骤2)中获取到的允许被该线程传输的数据,执行传输处理逻辑;
4)数据传输完毕
数据传输完毕后,一方面需要更新相应记录的传输状态,另一方面需要将相应记录的数据锁定字段的值清空。
2.根据权利要求1所述的方法,其特征在于,
步骤1)中的数据是传输状态为未传输、传输失败的情况,以及数据锁定字段没有线程唯一码。
3.根据权利要求1所述的方法,其特征在于,
在步骤2)中,根据步骤1)中更新的“程唯一码,获取真正能够被该线程传输的数据;主要目的是排除从线程读取到锁定期间被其他线程再次读取的情况。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610842168.6A CN106445703A (zh) | 2016-09-22 | 2016-09-22 | 一种解决数据传输中防并发脏读方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610842168.6A CN106445703A (zh) | 2016-09-22 | 2016-09-22 | 一种解决数据传输中防并发脏读方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106445703A true CN106445703A (zh) | 2017-02-22 |
Family
ID=58166863
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610842168.6A Pending CN106445703A (zh) | 2016-09-22 | 2016-09-22 | 一种解决数据传输中防并发脏读方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106445703A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109446183A (zh) * | 2017-08-31 | 2019-03-08 | 北京京东尚科信息技术有限公司 | 全局防重的方法和装置 |
CN111880675A (zh) * | 2020-06-19 | 2020-11-03 | 维沃移动通信(杭州)有限公司 | 界面显示方法、装置及电子设备 |
CN113505134A (zh) * | 2021-05-21 | 2021-10-15 | 武汉旷视金智科技有限公司 | 多线程数据处理方法、多线程底库数据入库方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1661562A (zh) * | 2004-02-23 | 2005-08-31 | 鸿富锦精密工业(深圳)有限公司 | 多线程发送资料系统及方法 |
CN1853166A (zh) * | 2003-09-30 | 2006-10-25 | 英特尔公司 | 用于多线程的线程管理的方法和装置 |
CN104376086A (zh) * | 2014-11-19 | 2015-02-25 | 浪潮(北京)电子信息产业有限公司 | 数据处理方法和装置 |
CN105700939A (zh) * | 2016-04-21 | 2016-06-22 | 北京京东尚科信息技术有限公司 | 一种分布式系统中多线程同步的方法和系统 |
-
2016
- 2016-09-22 CN CN201610842168.6A patent/CN106445703A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1853166A (zh) * | 2003-09-30 | 2006-10-25 | 英特尔公司 | 用于多线程的线程管理的方法和装置 |
CN1661562A (zh) * | 2004-02-23 | 2005-08-31 | 鸿富锦精密工业(深圳)有限公司 | 多线程发送资料系统及方法 |
CN104376086A (zh) * | 2014-11-19 | 2015-02-25 | 浪潮(北京)电子信息产业有限公司 | 数据处理方法和装置 |
CN105700939A (zh) * | 2016-04-21 | 2016-06-22 | 北京京东尚科信息技术有限公司 | 一种分布式系统中多线程同步的方法和系统 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109446183A (zh) * | 2017-08-31 | 2019-03-08 | 北京京东尚科信息技术有限公司 | 全局防重的方法和装置 |
CN109446183B (zh) * | 2017-08-31 | 2022-04-26 | 北京京东尚科信息技术有限公司 | 全局防重的方法和装置 |
CN111880675A (zh) * | 2020-06-19 | 2020-11-03 | 维沃移动通信(杭州)有限公司 | 界面显示方法、装置及电子设备 |
CN111880675B (zh) * | 2020-06-19 | 2024-03-15 | 维沃移动通信(杭州)有限公司 | 界面显示方法、装置及电子设备 |
CN113505134A (zh) * | 2021-05-21 | 2021-10-15 | 武汉旷视金智科技有限公司 | 多线程数据处理方法、多线程底库数据入库方法及装置 |
CN113505134B (zh) * | 2021-05-21 | 2023-02-24 | 武汉旷视金智科技有限公司 | 多线程数据处理方法、多线程底库数据入库方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105761139A (zh) | 对账系统及方法 | |
CN110362617B (zh) | 基于多并发技术从数据库快速导出批量数据方法和系统 | |
CN106445703A (zh) | 一种解决数据传输中防并发脏读方法 | |
US20110119675A1 (en) | Concurrent Data Processing and Electronic Bookkeeping | |
CN107403379B (zh) | 一种数据处理方法、装置和区块链核心分布式系统 | |
CN107993147A (zh) | 热点账户的余额控制方法及装置 | |
DE102012210420A1 (de) | Verfahren für ein systemeigenes Programm für das Übernehmen desselben Transaktionskontextes, wenn durch das in einer separaten Umgebung laufende primäre Programm aufgerufen | |
TWI687875B (zh) | 分布式事務處理方法及裝置 | |
CN101350022B (zh) | 基于数据库逻辑锁的变更处理方法 | |
CN110188103A (zh) | 数据对账方法、装置、设备和存储介质 | |
CN105701294B (zh) | 实现芯片复杂工程修改的方法及系统 | |
CN106095678A (zh) | 用于Windows平台下数据库业务操作的自动化结果检查方法 | |
CN111241083A (zh) | 票据清算方法、装置、电子设备及计算机可读存储介质 | |
CN106096997A (zh) | 清单组价方法、系统及装置 | |
CN108415758B (zh) | 分布式事务协调方法及装置 | |
CN110162532B (zh) | 交易数据处理方法和设备 | |
CN106293995A (zh) | 制造执行系统的数据备份系统及方法 | |
CN109542922B (zh) | 针对实时服务数据的处理方法及相关系统 | |
US9384228B2 (en) | Implementing a multi-column/multi-row constraint in a relational database table | |
CN102629362A (zh) | 一种企业年金账户管理系统中实现灵活账户结构的方法 | |
CN112099934A (zh) | 一种批处理方法、系统、计算机设备及存储介质 | |
CN102193987A (zh) | 基于oltp的增加节点数据关系的方法及系统 | |
KR101456189B1 (ko) | 특허 평가 엔진을 이용한 특허 자동 평가 방법 및 평가 서버 | |
CN115965451A (zh) | 数据核检方法、装置、电子设备、介质和程序产品 | |
CN111475578B (zh) | 征信联盟链中智能合约的上链表决方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170222 |