[发明专利]一种数据同步时防止内存溢出的方法和装置有效
申请号: | 201811010996.9 | 申请日: | 2018-08-31 |
公开(公告)号: | CN109189577B | 公开(公告)日: | 2020-05-19 |
发明(设计)人: | 付铨;袁松彪;梅纲 | 申请(专利权)人: | 武汉达梦数据库有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50;G06F9/54;G06F11/14 |
代理公司: | 深圳市六加知识产权代理有限公司 44372 | 代理人: | 向彬 |
地址: | 430000 湖北省武汉市东湖新技术开*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 数据 同步 防止 内存 溢出 方法 装置 | ||
1.一种数据同步时防止内存溢出的方法,其特征在于,包括:
从源端读取数据,根据消息队列中的已缓存数据量判断是否触发大字段外缓存,如果触发则对所述数据进行大字段外缓存处理;
将经外缓存处理后的数据缓存到消息队列中,并更新消息队列中的已缓存数据量;
从消息队列中取出数据并更新已缓存数据量,若取出的数据有大字段外缓存,则从外缓存中进行数据恢复;
将从消息队列取出的数据或经数据恢复后的数据装载至目的端,完成数据同步;
所述根据消息队列中的已缓存数据量判断是否触发大字段外缓存,如果触发则对所述数据进行大字段外缓存处理,具体包括:
计算从源端读取数据的数据字节大小;其中,在内外缓存交换模块内设置触发标记flag,0代表不外缓存大字段,1代表外缓存大字段,2代表数据读取线程被阻塞,将flag初始值设为0;每次进行数据同步时,flag根据实际情况被重置,则在每次计算从源端读取数据的数据字节大小之前,先判断flag是否为2,若flag=2,证明数据读取线程被阻塞,则等待数据读取组件唤醒;或者休眠一段时间后再检测flag的状态;
计算消息队列中的已缓存数据量与所述数据字节大小的和值,并与第一内存阈值比较;
如果所述和值大小超过所述第一内存阈值,则对所述数据进行大字段外缓存处理;提交外缓存请求后将flag重置为0;或者,若当前flag已经为1,则证明需要进行大字段外缓存,可跳过上述计算消息队列中的已缓存数据量与所述数据字节大小的和值,并与第一内存阈值比较过程,直接向公共I/O服务模块提交外缓存请求;若当前的触发标记flag为0且消息队列中当前的已缓存数据量+源端读取数据大小<第一内存阈值,证明当前消息队列中仍可缓存数据,则无需提交外缓存请求;
所述方法还包括:将当前消息队列中的已缓存数据量与第二内存阈值比较;如果所述已缓存数据量超过所述第二内存阈值,则将所述消息队列中预设比例的数据进行大字段外缓存处理;
从消息队列中取出数据并更新已缓存数据量具体包括:将数据追加到fillingQueue,请求公共I/O服务模块填充还原该数据;所述公共I/O服务模块接收请求后,根据所述数据对应的临时文件元数据结构,从所述临时文件中读入所述数据对应的大字段内容填充到该数据中的相应字段,进而完成该数据的恢复还原;最后将恢复的数据追加到filledQueue,作为currentData;其中,fillingQueue为数据请求填充队列,用于存放需要所述公共I/O服务模块填充还原的数据;filledQueue为数据填充完成队列,用于存放所述公共I/O服务模块已填充还原的数据;
其中,currentData表示当前返回数据,是经内外缓存交换模块后可返回给所述数据装载组件进而装载至目的端的数据。
2.根据权利要求1所述的数据同步时防止内存溢出的方法,其特征在于,对所述数据进行大字段外缓存处理的过程具体为:将所述数据中的大字段用临时文件元数据代替,并更新所述数据字节大小;将大字段和临时文件元数据进行提交,进而根据临时文件元数据将数据大字段的内容写到外存中的临时文件。
3.根据权利要求2所述的数据同步时防止内存溢出的方法,其特征在于,对有大字段外缓存的数据,从外缓存中进行数据恢复的过程具体为:根据所述数据对应的临时文件元数据结构,从所述临时文件中读入所述数据对应的大字段内容,进而完成数据恢复。
4.根据权利要求2或3所述的数据同步时防止内存溢出的方法,其特征在于,用于代替大字段的临时文件元数据包括临时文件名、大字段在临时文件中的起始位置以及大字段的长度。
5.根据权利要求1所述的数据同步时防止内存溢出的方法,其特征在于,在所述从消息队列中取出数据之前,所述方法还包括:将所述消息队列中的数据按照经外缓存处理和未经外缓存处理进行分组,且所述未经外缓存处理的数据顺序靠前,所述经外缓存处理的数据顺序靠后,使得所述未经外缓存处理的数据先从消息队列中被取出。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉达梦数据库有限公司,未经武汉达梦数据库有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811010996.9/1.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置