[发明专利]一种数据同步时防止内存溢出的方法和装置有效
申请号: | 201811010996.9 | 申请日: | 2018-08-31 |
公开(公告)号: | CN109189577B | 公开(公告)日: | 2020-05-19 |
发明(设计)人: | 付铨;袁松彪;梅纲 | 申请(专利权)人: | 武汉达梦数据库有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50;G06F9/54;G06F11/14 |
代理公司: | 深圳市六加知识产权代理有限公司 44372 | 代理人: | 向彬 |
地址: | 430000 湖北省武汉市东湖新技术开*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 数据 同步 防止 内存 溢出 方法 装置 | ||
本发明涉及数据同步技术领域,具体涉及一种数据同步时防止内存溢出的方法和装置,其中方法包括:从源端读取数据,根据消息队列中已缓存数据量判断是否触发外缓存,如果触发则对数据进行大字段外缓存处理,再将数据缓存到消息队列,如果不触发则直接将数据缓存到消息队列;当下游组件需要时从消息队列中取出数据,若取出的数据有大字段外缓存,则从外缓存中进行数据恢复;将数据装载至目的端,完成数据同步。本发明将数据中占用内存过多的大字段放到外存中缓存,在数据需要清洗转换或装载时再进行数据恢复,避免同步服务器内部缓存大量数据,使数据读取组件尽可能保持工作而不是暂停,提高同步服务器同步数据的性能以及工作稳定性。
【技术领域】
本发明涉及数据同步技术领域,具体涉及一种数据同步时防止内存溢出的方法和装置。
【背景技术】
通常来讲,数据同步的基本步骤可以抽象为三个相互关联的部分:一是数据读取组件从源端的数据源读取数据到同步服务器,二是数据缓存到同步服务器的消息队列,三是数据装载组件从消息队列将数据取出,并写到目的端数据源,具体如图1所示。其中,消息队列为同步服务器内部用于缓存数据读取组件抽取的数据的队列;在第一个步骤中,可能还需要对抽取来的数据进行解析,构造成结构化数据;而在第三个步骤中,数据在装载到目的端数据源之前可能还需要数据转换组件(图中未示出)对数据做一定转换清洗工作,清洗转换完成后,数据装载组件再将数据装到目的数据源处。如果上述三个步骤协调的好,数据读取组件的速度和数据装载组件的速度匹配,则同步过程可满负荷进行,且不会占用同步服务器太多的内存用于缓存数据。
为此引入缓存数据量大小,若缓存数据量极小几乎为零,则说明数据装载组件的处理速度远快于数据读取组件;若缓存数据量较小,说明数据读取组件和数据装载组件配合的很好,处理速度相当;若缓存数据量大,则说明数据装载组件的速度跟不上数据读取组件的处理速度。因此,缓存数据量的大小能够反应出数据同步的瓶颈。在上述数据同步过程中,如果数据装载组件向目的端数据源装载过程中出现性能问题,如典型的数据装载过程使用的网络突然拥塞,则同步服务器内部将缓存大量数据,特别是存在大字段的情况下,单个同步任务占用大量内存,直接影响到其它工作线程对内存的需求,数据同步服务器的整体性能也会出现严重降低,甚至发生内存溢出导致系统崩溃。
目前常用的做法是限制消息队列的大小:当消息队列填满后,数据读取组件试图向消息队列继续添加数据时,数据读取线程被阻塞,直到数据装载组件从消息队列中消耗了一条数据后,数据读取线程才继续工作,通过这种机制控制同步过度消耗服务器内存。
然而,数据读取组件从源端数据源抽取数据到同步服务器的这一过程是需要耗时的,因消息队列已满而暂停这一过程肯定会使整个同步的性能受到影响。而且,消息队列的长度一般通过同步服务器能使用的最大内存量、同步服务器启动所需内存、工作线程数、机动内存、以及源端数据源处根据数据字段的类型估算一条数据的大小等信息计算而得,而根据数据的字段类型估算字段的大小是一种不精确方法,可能会导致工作线程实际使用内存超过初始化分配其可用的大小,小概率的情况下发生内存溢出,进而导致系统崩溃,影响同步服务器工作的稳定性。
鉴于此,克服上述现有技术所存在的缺陷是本技术领域亟待解决的问题。
【发明内容】
本发明需要解决的技术问题是:
在数据同步过程中,因外部原因容易导致同步服务器内部缓存大量数据,目前通常是在消息队列填满后暂停数据读取,使整个同步的性能受到影响,而且数据估算不精确,小概率发生内存溢出导致系统崩溃,影响同步服务器工作的稳定性。
本发明通过如下技术方案达到上述目的:
第一方面,本发明提供了一种数据同步时防止内存溢出的方法,包括:
从源端读取数据,根据消息队列中的已缓存数据量判断是否触发大字段外缓存,如果触发则对所述数据进行大字段外缓存处理;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉达梦数据库有限公司,未经武汉达梦数据库有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811010996.9/2.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置