数据库入库方法

文档序号:7970193阅读:252来源:国知局
专利名称:数据库入库方法
技术领域
本发明提供一种数据库入库方法,尤其是大型关系型数据库应用系统中入库效率的方法。 背录技术
在通信领域中,通过网管来统一管理网元。随着业务的增长及功能多样化,网管管理的 网元越来越多,而且网元中管理的单板也越来越多。这就对网管的响应速度、资源的利用率 提出了较髙的要求。
性能管理是网管的几大功能之一,也是实时性最强的功能之一。以传输网的SDH设备告 警、性能为例,各个单板每隔15分钟就要向网管上报大量的15分钟性能,管理的单板越多, 上报的15分钟性能越多,而且各个单板不是在同一时间上报,而是在每隔15分钟前后,各 自通过NCP、 Manager向网管上报。在数据板较少时,使用传统的方法,虽然入库效率低, 但由于上报的15分钟性能不是太多,故占用数据库资源不大。随便数据板的增多,上报的 15分钟性能成倍的增加,如果还是使用原来传统的入库方法,不光入库效率低,而且导致数 据库线程占用70%-90%多的CPU,从而导致整个网管的效率低下。

发明内容
针对现有技术存在的缺陷和不足,本发明提供一种数据库入库方法,通过设立临时存储 入库数据的内存缓冲区减少向数据库发送入库数据的频率。
为了达到上述发明目的,本发明数据库入库方法,包括以下步骤
(1) 在空闲内存中开辟一个用于临时存储入库数据的内存缓冲区;
(2) 先将不定时接到的多批入库数据存入所述内存缓冲区,再将这些入库数据集中发送 给数据库。
上述的数据库入库方法中,步骤(1)具体为在空闲内存中分配的内存缓冲区,用以保 存入库数据的字段值,同时在内存缓冲区头增加字节,用以保存入库数据进入内存缓冲区的 起始时间和终止时间。
上述的数据库入库方法中,步骤(2)具体为先将不定时接到的多批入库数据存入所述
内存缓冲区,当内存缓冲区中的入库数据量达到或超过内存缓冲区容量时,再将这些入库数 据集中发送给数据库。
上述的数据库入库方法中,步骤(2)具体为先将不定时接到的多批入库数据存入所述 内存缓冲区,再定时将这些入库数据集中发送给数据库。
上述的数据库入库方法中,步骤(2)具体为先将不定时接到的多批入库数据存入所述 内存缓冲区,当数据库査询到内存缓冲区内的入库数据时,再将这些入库数据集中发送给数 据库。
上述的数据库入库方法中,步骤(2)进一步包括以下步骤
(21) 数据库收到各设备的新的入库数据;
(22) 数据库判断内存缓冲区是否巳满,如果内存缓冲区已满,则先把内存缓冲区中已 有的入库数据一次性的发送给数据库,再向内存缓冲区中存入新的入库数据;如果内存缓冲 区未满,直接向内存缓冲区中存入新的入库数据。
上述的数据库入库方法中,步骤(2)进一步具体为先将不定时接到的多批入库数据存 入所述内存缓冲区,当数据库査询入库数据时,判断査询时间是否在缓冲区时间段内,如果 在,先将这些入库数据集中发送给数据库,再从数据库中査询如果査询时间不在缓沖区时 间段内,则直接从数据库中査询。
本发明数据库入库方法改善了网管的性能,使数据入库效率大幅提髙,数据库资源占用 率明显降低。


图l为本发明实施案例的类图; 图2为缓存区满入库流程示意图; 图3为定时入库流程示意图; 图4为査询入库流程示意图。
具体实施例方式
下面结合附图对本发明作进一步的详细说明
本发明的目的是克服上述大量、分散数辉入库效率低,导致网管的整体性能差的特点,
充分利用髙速的内存,提供一种非常简单的高效的入库方法。本发明具有以下特点l)缓冲 区大小根据手工配置及表的结构来确定;2)缓冲区数据通过三种方式刷新管理。3)内存缓 冲区中,增加起始时间和终止时间。4)充分利用数据库提供的底层批量入库接口,提高缓冲 区的利用率及入库效率。
本发明的思路是根据用户的设置,在内存中开劈一个大小适当的区域,用于数据的缓 存,当数据量较少时,数据直接存在内存中,当数据累积到一定量时,接近或超过内存缓冲 区时,才一次性的入库,减少入库的次数,从而提高入库的效率。
本发明的技术方案包括如下内容
步骤l、内存缓冲区的组织
在空闲内存中分配缓冲区域,用以保存入库表的字段值,同时在缓冲区头增加N个字节, 用以保存起始时间和终止时间。缓冲区只保存字段值,不保存字段名,从而提高了缓冲区使 用效率,同时也提髙了入库的效率。以上这些得益于充分利用数据库提供的底层批量入库接m。
歩骤2、内存缓冲区的管理
缓冲区刷新的3个条件 一、按时间定时批量入库;二、按缓冲区域的实际容量;三、 査询时,先判断査询时间是否在缓冲区时间段内,如果在,先刷新缓冲区域,再从数据库査 询如果不在,则不用刷新缓冲区,直接从数据库査询三个条件可以同时起作用。
在步骤2中,内存缓冲区以3种方式进行管理
方式一、如图3所示,先将不定时接到的多批入库数据存入所述内存缓冲区,再定时将 这些入库数据集中发送给数据库。按时间定时批量入库,可以保证内存缓冲区数据及时入库, 同时也可以避开大量数据插入缓冲区的时刻,避免造成资源等待及死锁。
方式二、如图2所示,首先,数据库收到各设备的新的入库数据然后,数据库判断内 存缓冲区是否已满,如果内存缓冲区己满,则先把内存缓冲区中己有的入库数据一次性的发 送给数据库,再向内存缓冲区中存入新的入库数据;如果内存缓冲区未满,直接向内存缓冲 区中存入新的入库数据。按缓冲区域的实际容量,数据库收到各设备的报文后,先判断内存 缓冲区是否己满如果满,则先把缓冲区的数据一次性的入库后,再向内存缓冲区中插入记 录如果未满,直接向内存缓冲区中插入记录。这样可以最大限度的减少内存缓冲区向数据 库发送数据的频率。
方式三、如图4所示,先将不定时接到的多批入库数据存入所述内存缓冲区,当数据库 査询入库数据时,判断査询时间是否在缓冲区时间段内,如果在,先将这些入库数据集中发 送给数据库,再从数据库中査询;如果査询时间不在缓冲区时间段内,则直接从数据库中査 询。这样可以提高内存缓冲区向数据库发送数据的有效性。
下面结合具体实施对本发明作进一步的说明。实施例子是以sybase数据库为基础,详细 说明本发明的过程。
为了方便、快捷使用此功能,此功能已模块化,对外提供接口,调用者只需要调用接口 即可。
一、 接口
init函数,用于初始化内存缓冲区。共有4个参数,第l个参数为void+,用于指向服 务器的指针;第2个参数为charis用于指向具体的数据库的指针第3个参数为char*,用 于指定具体的表,第4个参数为默认int,用于默认批刷新的大小。
addNew函数,用以增加新的记录。共有2个参数,第1个参数为void *,用以指向服务 器的指针;第2个参数为int,用以指定数据以何种方式新增。
setField函数,用以设置不同字段的值。此函数有多个重载函数,用以设定int、 char 等类型的值。
flush函数,用以刷新内存缓冲区的内容。
二、 继承关系
不同的数据库在接口的基础上实现具体的功能,图1显示了不同数据库继承关系的类图。
三、 实现方式
1、 首先调用init()初始化内存。内存的大小可以是默认的,也可以在此函数中设定(可 以从配置文件中读取手工配置的数据)。
2、 收到记录时,通过调用addNew ()后,使用setField()函数给各个字段赋值。
3、 当记录达到规定的记录大小时, 一次性的调用flush()函数,调用sybase提供的底 层入库接口,刷新内存的记录入库。见图2
4、 按设定的时间,定时刷新缓冲区数据。见图3。 5、 如果界面下发査询此表的命令时,先判断命令中时间参数是否在缓冲区时间内,如果 在,则先刷新缓冲区,再査询;如果不在,直接从数据库査询。见图4。
6、 重复步骤3、 4,达到批量入库的目的,从而减少入库的次数。
使用传统的入库方法,数据库资源占用率较髙,严重影响网管的整体性能。改用本发明 实施方案后,入库效率明显提高了。数据库资源占用率达到正常,从而改善了网管的性能。
以上为本发明的较佳实施案例,并不用以限制本发明的保护范围。
权利要求
1、一种数据库入库方法,其特征在于包括以下步骤(1)在空闲内存中开辟一个用于临时存储入库数据的内存缓冲区;(2)先将不定时接到的多批入库数据存入所述内存缓冲区,再将这些入库数据集中发送给数据库。
2、 根据权利要求1所述的数据库入库方法,其特征在于步骤(1)具体为在空闲内 存中分配的内存缓冲区,用以保存入库数据的字段值,同时在内存缓冲区头增加字节,用以 保存入库数据进入内存缓沖区的起始时间和终止时间。
3、 根据权利要求1所述的数据库入库方法,其特征在于步骤(2)具体为先将不定 时接到的多批入库数据存入所述内存缓冲区,当内存缓冲区中的入库数据量达到或超过内存 缓冲区容量时,再将这些入库数据集中发送给数据库。
4、 根据权利要求1所述的数据库入库方法,其特征在于歩骤(2)具体为先将不定 时接到的多批入库数据存入所述内存缓冲区,再定时将这些入库数据集中发送给数据库。
5、 根据权利要求1所述的数据库入库方法,其特征在于歩骤(2)具体为先将不定 时接到的多批入库数据存入所述内存缓冲区,当数据库査询到内存缓冲区内的入库数据时, 再将这些入库数据集中发送给数据库。
6、 根据权利要求3所述的数据库入库方法,其特征在于步骤(2)进一步包括以下歩骤(21) 数据库收到各设备的新的入库数据;(22) 数据库判断内存缓冲区是否己满,如果内存缓冲区已满,则先把内存缓冲区中已 有的入库数据一次性的发送给数据库,再向内存缓冲区中存入新的入库数据;如果内存缓冲 区未满,直接向内存缓冲区中存入新的入库数据。
7、 根据权利要求5所述的数据库入库方法,其特征在于步骤(2)进一步具体为先 将不定时接到的多批入库数据存入所述内存缓冲区,当数据库査询入库数据时,判断査询时 间是否在缓冲区时间段内,如果在,先将这些入库数据集中发送给数据库,再从数据库中査 询;如果査询时间不在缓冲区时间段内,则直接从数据库中査询。
全文摘要
本发明公开了一种数据库入库方法。现有的数据入库方法是大量、分散数据入库,效率低、耗费资源、网管整体性能差。为解决上述问题,本发明包括以下步骤(1)在空闲内存中开辟一个用于临时存储入库数据的内存缓冲区;(2)先将不定时接到的多批入库数据存入所述内存缓冲区,再将这些入库数据集中发送给数据库。本发明改善了网管的性能,使数据入库效率大幅提高,数据库资源占用率明显降低,适用于各种数据库系统。
文档编号H04L12/24GK101170433SQ20061014098
公开日2008年4月30日 申请日期2006年10月25日 优先权日2006年10月25日
发明者王雪怀, 郑循茂, 郭文君 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1