本发明涉及计算机技术领域,具体而言,涉及一种入库数据的管理方法及装置。
背景技术:
在大数据、人工智能时代,数据库越来越与人们的生活紧密相关,甚至影响非常大,因此数据的存储非常重要。
当前很多系统采用的入库方法是:如有数据需要入库,立即把数据转换成数据库能识别的insert语句入库或者调用数据库的存储过程入库。如果业务层瞬间有大量数据需要入库时,整个操作系统因I/0读写瓶颈会导致系统资源高,应用程序的响应、用户体验、以及程序的性能、甚至系统的可靠性都会受到影响。
技术实现要素:
有鉴于此,本发明实施例的目的在于提供一种入库数据的管理方法及装置以降低数据库因瞬时大量数据入库对而对系统造成影响的问题。
本发明实施例提供的一种入库数据的管理方法,该入库数据的管理方法应用于系统内存,所述系统内存分配有多个内存块和管理所述多个内存块的索引链表,所述索引链表包括多个节点,所述多个节点与所述多个内存块一一对应,所述入库数据的管理方法包括:
判断所述索引链表的第一个节点对应的内存块是否为空闲;
当所述索引链表的第一个节点对应的内存块为空闲时,将待入库的数据分配给所述索引链表的第一个节点对应的内存块,以便进行入库处理;
将所述索引链表的第一个节点移动至所述索引链表的尾部。
优选地,所述方法还包括:
当所述索引链表的第一个节点对应的内存块已被分配数据时,为系统内存分配新内存块并将待入库的数据分配给所述新内存块;
在所述索引链表的尾部新增与所述新内存块对应的节点。
优选地,在判断所述索引链表的第一个节点对应的内存块是否为空闲的步骤之前,所述方法还包括:
分配所述多个内存块,并建立管理所述多个内存块的所述索引链表。
优选地,所述方法还包括:
将已释放的内存块对应的节点移动至所述索引链表的首部。
优选地,所述将待入库的数据分配给所述索引链表的第一个节点对应的内存块的步骤包括:
将所述待入库的数据转换成数据库语句后分配给所述索引链表的第一个节点对应的内存块。
本发明实施例提供的一种入库数据的管理装置,应用于系统内存,所述系统内存分配有多个内存块和管理所述多个内存块的索引链表,所述索引链表包括多个节点,所述多个节点与所述多个内存块一一对应,所述入库数据的管理装置包括:
判断模块,用于判断所述索引链表的第一个节点对应的内存块是否为空闲;
第一执行模块,用于当所述索引链表的第一个节点对应的内存块为空闲时,将待入库的数据分配给所述索引链表的第一个节点对应的内存块,以便进行入库处理,以及将所述索引链表的第一个节点移动至所述索引链表的尾部。
优选地,入库数据的管理装置还包括:
第二执行模块,用于当所述索引链表的第一个节点对应的内存块已被分配数据时,为系统内存分配新内存块并将待入库的数据分配给所述新内存块,以及在所述索引链表的尾部新增与所述新内存块对应的节点。
优选地,入库数据的管理装置还包括:
内存块分配模块,用于为系统内存分配多个内存块,并建立管理所述多个内存块的所述索引链表。
优选地,入库数据的管理装置还包括:
第三执行模块,用于将已释放的内存块对应的节点移动至所述索引链表的首部。
优选地,所述第一执行模块还用于将所述待入库的数据转换成数据库语句后分配给所述索引链表的第一个节点对应的内存块。
对于现有技术,本发明提供的入库数据的管理方法及装置具有如下的有益效果:
本发明提供的入库数据的管理方法及装置通过在数据入库时由内存块存放需要入库的数据,这样可以尽量的减少向系统反复申请空间带来的开销,只要申请一次内存,用完以后可在下一次需要分配内存空间的时候使用,解决了瞬时大量数据入库对系统影响的问题。
同时,将入库数据分配给与索引链表的节点对应的内存块中,可通过线程定时入库处理索引链表管理的内存块中的数据,以降低对系统的影响,使系统运行更加稳定。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明实施例提供的入库数据的管理装置的终端设备的方框示意图。
图2为本发明第一实施例提供的入库数据的管理方法的流程图。
图3为本发明第二实施例提供的入库数据的管理装置的方框示意图。
主要元件符号说明
入库数据的管理装置110,系统内存120,存储控制器130,处理器140,外设接口150,输入输出单元160,显示单元170,判断模块111,第一执行模块112,第二执行模块113,内存块分配模块114,第三执行模块115。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
如图1所示,是本发明实施例提供的入库数据的管理装置110的终端设备的方框示意图。所述入库数据的管理装置110的终端设备包括入库数据的管理装置110、系统内存120、存储控制器130、处理器140、外设接口150、输入输出单元160、显示单元170。`
所述系统内存120、存储控制器130、处理器140、外设接口150、输入输出单元160、显示单元170各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。所述入库数据的管理装置110包括至少一个可以软件或固件(firmware)的形式存储于所述系统内存120中或固化在所述入库数据的管理装置110的终端设备的操作系统(operating system,OS)中的软件功能模块。所述处理器140用于执行系统内存120中存储的可执行模块,例如所述入库数据的管理装置110包括的软件功能模块或计算机程序。
其中,系统内存120可以是,但不限于,随机存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-Only Memory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。其中,系统内存120用于存储程序,所述处理器140在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的流过程定义的入库数据的管理装置110所执行的方法可以应用于处理器140中,或者由处理器140实现。
处理器140可能是一种集成电路芯片,具有信号的处理能力。上述的处理器140可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述外设接口150将各种输入/输入装置耦合至处理器140以及系统内120存。在一些实施例中,外设接口150,处理器140以及存储控制器130可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。
输入输出单元160用于提供给用户输入数据实现用户与入库数据的管理装置110的终端设备的交互。所述输入输出单元160可以是,但不限于,鼠标和键盘等。
显示单元170在所述入库数据的管理装置110的终端设备与用户之间提供一个交互界面(例如用户操作界面)或用于显示图像数据给用户参考。在本实施例中,所述显示单元170可以是液晶显示器或触控显示器。若为触控显示器,其可为支持单点和多点触控操作的电容式触控屏或电阻式触控屏等。支持单点和多点触控操作是指触控显示器能感应到来自该触控显示器上一个或多个位置处同时产生的触控操作,并将该感应到的触控操作交由处理器140进行计算和处理。
第一实施例
请参阅图2,本发明实施例提供了一种入库数据的管理方法,下面将对图2所示的具体流程进行详细阐述。
S101:为系统内存分配内存块,并建立管理内存块的索引链表。
本发明提供的入库数据的管理方法应用于系统内存,用于对需要进行数据库入库处理的数据进行入库前的管理,以减少瞬间大量数据入库对系统的影响。
在对入库数据管理之前,首先系统内存会分配多个空闲的内存块并建立管理该多个内存块的索引链表,该索引链表包括数量与内存块数量相应的多个节点,多个节点与多个内存块一一对应,每个节点包括指针和标识两部分,指针指示对应的内存块的地址信息,标识指示该对应的内存块的状态信息,该状态信息可以为空闲状态或使用状态。
S102:判断索引链表的第一个节点对应的内存块是否为空闲,如果是执行步骤S104,如果否执行步骤S103。
在对入库数据进行管理时,系统会通过索引链表的第一个节点(即索引链表首部的节点)的标识判断对应的内存块是否为空闲状态。
如果索引链表的第一个节点对应的内存块处于使用状态(索引链表的第一个节点对应的内存块分配有待入库的数据,即存储有待入库的数据),则执行步骤S103。
如果索引链表的第一个节点对应的内存块处于空闲状态,则执行步骤S104。
S103:为系统内存分配新内存块,将待入库的数据分配给新内存块,并在索引链表的尾部新增与新内存块对应的节点。
如果索引链表的第一个节点对应的内存块处于使用状态,即说明已被分配数据的所有内存块均处于使用状态,那么系统内存会再次分配新的内存块,并将待入库的数据分配给该新的内存块,同时,在索引链表的尾部新增与所述新内存块对应的节点。
作为另一种可选的实施方式,当索引链表的第一个节点对应的内存块处于使用状态时,系统内存再次分配新的内存块后,也可在索引链表的首部新增与新内存块对应的节点,然后再将待入库的数据分配给索引链表首部的节点对应的内存块(即新分配的内存块)。其中,系统内存再次分配新的内存块可以为1个或多个,本实施例中未做任何限定。
S104:待入库的数据分配给索引链表的第一个节点对应的内存块,并将索引链表的第一个节点移动至索引链表的尾部。
如果索引链表的第一个节点对应的内存块处于空闲状态,则将待入库的数据转换成数据库语句(如SQL语句或Oracle语句等),然后将转换成数据库语句后的数据存储至索引链表的第一个节点对应的内存块中。同时,将索引链表的第一个节点移动至所述索引链表的尾部。如此,原索引链表的第二个节点则变为当前的索引链表的第一个节点。
待入库的数据存储至索引链表的第一个节点对应的内存块后,按照索引链表的节点从后至前的顺序,对节点对应的内存块中存储的数据按照线程进行入库处理,处理完成后释放内存块。
S105:将已释放的内存块对应的节点移动至索引链表的首部。
在将内存块中存储的待入库的数据按照线程进行入库处理后,系统会释放该内存块,被释放的内存块即处于空闲状态。此时,系统将已释放的内存块对应的节点移动至索引链表的首部,以便再次存储待入库的数据。
本发明实施例提供的入库数据的管理方法,通过为系统内存分配内存块并建立管理内存块的索引链表,在数据入库时将数据存储至索引链表的第一个节点对应的内存块中并将索引链表的第一个节移动至索引链表的尾部。如此可以尽量的减少向系统反复申请空间带来的开销,数据入库时只要申请一次内存,用完以后可在下一次需要分配内存空间的时候使用,避免因I/O读写瓶颈导致CPU花费大量的时间在当前需要入库的操作上,以至系统响应不及时的问题,防止系统因长时间不响应处理系统的读写操作,导致系统数据丢的情况发生,解决了瞬时大量数据入库对系统影响的问题,使系统运行更加稳定。
第二实施例
请参阅图3,是本发明较佳实施例提供的入库数据的管理装置110的功能模块示意图。入库数据的管理装置110应用于系统内存,系统内存分配有多个内存块和管理多个内存块的索引链表,索引链表包括多个节点,多个节点与多个内存块一一对应,入库数据的管理装置110包括有判断模块111、第一执行模块112、第二执行模块113、内存块分配模块114和第三执行模块115。
其中,判断模块111用于判断所述索引链表的第一个节点对应的内存块是否为空闲。可以理解,判断模块111可以执行本发明实施例中的步骤S102。
第一执行模块112用于当所述索引链表的第一个节点对应的内存块为空闲时,将待入库的数据分配给所述索引链表的第一个节点对应的内存块,以及将所述索引链表的第一个节点移动至所述索引链表的尾部。具体的,本实施例中,第一执行模块112是通过将所述待入库的数据转换成数据库语句后分配给所述索引链表的第一个节点对应的内存块的。可以理解,第一执行模块112可以执行本发明实施例中的步骤S104。
第二执行模块113用于当所述索引链表的第一个节点对应的内存块已被分配数据时,为系统内存分配新内存块并将待入库的数据分配给所述新内存块,以及在所述索引链表的尾部新增与所述新内存块对应的节点。可以理解,第二执行模块113可以执行本发明实施例中的步骤S103。
内存块分配模块114用于为系统内存分配多个内存块,并建立管理所述多个内存块的所述索引链表。可以理解,内存块分配模块114可以执行本发明实施例中的步骤S101。
第三执行模块115用于将已释放的内存块对应的节点移动至所述索引链表的首部。可以理解,第三执行模块115可以执行本发明实施例中的步骤S105。
综上,本发明实施例提供的入库数据的管理方法及装置,通过为系统内存分配内存块并建立管理内存块的索引链表,在数据入库时将数据存储至索引链表的第一个节点对应的内存块中并将索引链表的第一个节移动至索引链表的尾部。如此可以尽量的减少向系统反复申请空间带来的开销,数据入库时只要申请一次内存,用完以后可在下一次需要分配内存空间的时候使用,避免因I/O读写瓶颈导致CPU花费大量的时间在当前需要入库的操作上,以至系统响应不及时的问题,防止系统因长时间不响应处理系统的读写操作,导致系统数据丢的情况发生,解决了瞬时大量数据入库对系统影响的问题,使系统运行更加稳定。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。