CN105786616A - 内存管理方法及系统 - Google Patents
内存管理方法及系统 Download PDFInfo
- Publication number
- CN105786616A CN105786616A CN201610073294.XA CN201610073294A CN105786616A CN 105786616 A CN105786616 A CN 105786616A CN 201610073294 A CN201610073294 A CN 201610073294A CN 105786616 A CN105786616 A CN 105786616A
- Authority
- CN
- China
- Prior art keywords
- statement
- priority
- substatement
- application heap
- processing
- 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.)
- Granted
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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/503—Resource availability
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种内存管理方法及系统。根据所述方法,所述系统按照待处理语句中处理标识的处理次序优先级由低到高的顺序,将所述待处理语句逐级分解成多个子语句,其中,所述处理标识用于标识同级子语句之间的逻辑处理关系;将分解后的各级含有处理标识的子语句按照优先级保存在多个内存段中;根据处理标识的处理次序优先级由高到低的顺序,确定最高优先级为当前优先级;从当前优先级对应的内存段中读取子语句,进行语句处理,获得处理结果,并将处理结果保存至下一优先级对应的内存段中;释放当前优先级对应的内存段;将下一优先级更新为当前优先级,并返回执行子语句的读取和处理操作,直至所述待处理语句处理完成。本发明能够提高内存使用效率。
Description
技术领域
本发明涉及计算机处理领域,尤其涉及一种内存管理方法及系统。
背景技术
内存管理对于一个大型系统有着至关重要的影响,占用大量的内存和频繁的内存申请都会加重系统的负担,最终导致系统的运行效率下降。
现有的内存管理基本原则为:减少向操作系统分配内存的次数,即一次申请多次利用。一般的方式采用一次性向操作系统分配一个大的内存,并准备两个链表;将此大内存划分为多个小内存块,所有的小内存块加入空闲链表,系统使用的时候从空闲链表中摘除,放入工作链表,使用完之后再次放回空闲链表;在对链表操作时,需要先上锁保护共享资源。
当进行复杂运算、或数据处理时,系统仅以复杂运算的处理过程为整体,提供一个较大的内存空间,并利用链表方式维护所提供的内存空间,但却未能细化内存空间的使用,使得复杂运算过程中对该内存空间的管理不够精细,内存使用率低。
发明内容
本发明提供一种内存管理方法及系统,用于解决现有技术中复杂运算、或数据处理过程中未提供有针对性的内存管理的问题。
为解决上述问题,本发明提供一种内存管理方法,包括:按照待处理语句中处理标识的处理次序优先级由低到高的顺序,将所述待处理语句逐级分解成多个子语句,其中,所述处理标识用于标识同级子语句之间的逻辑处理关系;将分解后的各级含有处理标识的子语句按照优先级保存在多个内存段中;根据处理标识的处理次序优先级由高到低的顺序,确定最高优先级为当前优先级;从当前优先级对应的内存段中读取子语句,进行语句处理,获得处理结果,并将处理结果保存至下一优先级对应的内存段中;释放当前优先级对应的内存段;将下一优先级更新为当前优先级,并返回执行子语句的读取和处理操作,直至所述待处理语句处理完成。
优选地,所述待处理语句包括:数据库语句和/或逻辑运算语句。
优选地,将所述待处理语句逐级分解成多个子语句之前,还包括:按照待处理语句中的处理标识的优先级,将待处理语句中子语句和处理标识基于二叉树结构进行设置。
优选地,采用内存堆栈作为各内存段。
优选地,所述将分解后的各级含有处理标识的子语句按照优先级保存在多个内存段中包括:将分解后同一优先级的多个处理标识,以及所连接的子语句按照优先级保存在同一内存段中。
优选地,所述内存段包括:工作区域和输出区域;则从当前优先级对应的内存段中读取包含处理标识的子语句,进行语句处理,获得处理结果,并将处理结果保存至下一优先级对应的内存段中包括:从当前优先级对应的内存段的工作区域中读取包含处理标识的子语句,进行语句处理,获得处理结果;将所述处理结果保存在当前优先级对应的内存段的输出区域中,并传递至下一优先级对应的内存段的工作区域中。
优选地,所述从当前优先级对应的内存段中读取包含处理标识的子语句,进行语句处理,获得处理结果,并将处理结果保存至下一优先级对应的内存段中包括:从当前优先级对应的内存段中读取由多个处理标识连接的子语句;判断所述子语句的多种处理方式中是否有符合存储在预先单独开辟的内存段中的优选处理方式;若是,则按照所符合的优选方式,来进行语句处理,获得处理结果;若否,则组合所述子语句的处理方式,并按照各处理方式分别进行语句处理;统计各处理方式的处理性能,并将优选的处理方式保存在所述预先单独开辟的内存段中。
优选地,所述内存段中包含临时区域,则所述组合子语句的处理方式,并按照各处理方式分别进行语句处理包括:若至少两个处理方式中包含相同处理部分,则将所述相同处理部分进行处理,获得临时处理结果并保存在所述临时区域中;利用所述临时区域中的各临时处理结果和所对应的各处理方式,分别进行语句处理。
基于上述目的,本发明还提供一种内存管理系统,包括:语句分解模块,用于按照待处理语句中处理标识的处理次序优先级由低到高的顺序,将所述待处理语句逐级分解成多个子语句,其中,所述处理标识用于标识同级子语句之间的逻辑处理关系;内存保存模块,用于将分解后的各级含有处理标识的子语句按照优先级保存在多个内存段中;语句处理模块,用于根据处理标识的处理次序优先级由高到低的顺序,确定最高优先级为当前优先级;从当前优先级对应的内存段中读取子语句,进行语句处理,获得处理结果,并将处理结果保存至下一优先级对应的内存段中;内存释放模块,用于释放当前优先级对应的内存段,并通知所述语句处理模块;所述语句处理模块还用于将下一优先级更新为当前优先级,并返回执行子语句的读取和处理操作,直至所述待处理语句处理完成。
优选地,所述内存段包括:工作区域和输出区域;则所述语句处理模块用于从当前优先级对应的内存段的工作区域中读取包含处理标识的子语句,进行语句处理,获得处理结果;以及,将所述处理结果保存在当前优先级对应的内存段的输出区域中,并传递至下一优先级对应的内存段的工作区域中。
如上所述,本发明的内存管理方法及系统,具有以下有益效果:通过将复杂的语句按照处理标识的优先级进行分解缓存,再逐级计算、释放内存段,如此实现了对复杂语句内存的分段管理,能够及时释放语句处理过程中占用的内存;另外,利用二叉树结构设置子语句和处理标识,能够提高确定用于存放各子语句的内存段的效率;另外,采用内存堆栈能够解决为各内存段设置工作链表的操作,进一步提高计算机的执行效率;还有,将分解后同一优先级的多个处理标识,以及所连接的子语句按照优先级保存在同一内存段中,有利于减少内存段的寻址次数,提高寻址效率;再者,将各内存段进行分区域管理,实现内存段的流水化作业,提高了处理器和内存之间的交互效率;还有,预存储位于同一内存段中的子语句的处理方式,有利于子语句在重复执行时,以提供最优的处理性能;此外,设置临时区域,有利于在选择处理方式过程中减少处理器的重复运算。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据本发明实施例的内容和这些附图获得其他的附图。
图1是本发明的内存管理方法的一个实施例的方法流程图。
图2是本发明的内存管理方法中分解语句的一个实施例的分解示意图。
图3是本发明的内存管理方法中步骤S4的一个实施例的方法流程图。
图4是本发明的发明名称的又一个实施例的结构方框图。
具体实施方式
为使本发明解决的技术问题、采用的技术方案和达到的技术效果更加清楚,下面将结合附图对本发明实施例的技术方案作进一步的详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明提供一种内存管理方法。所述内存管理方法由内存管理系统来执行。所述内存管理系统包括安装在计算机设备中的软件和硬件。所述计算机设备包括:内存、处理器。所述内存管理系统利用处理器执行所述内存管理方法,以实现对内存的精细化管理。所述计算机设备包括但不限于:服务器、个人电脑等。
所述内存管理系统特别用于在数据库操作过程中处理数据库语句。其中,所述数据库包括但不限于:MySQL数据库、Oracle数据库等。其中,所述数据库语句包括:用于对数据库执行增删改查操作的语句。例如,所述数据库语句为T1semijoinT2leftjoinT3leftjoinT4leftjoinT5semijoinT6。
所述内存管理系统还用于在逻辑运算过程中处理逻辑运算语句。其中,所述逻辑运算语句包括但不限于:包含运算符号的语句、包含逻辑符号的语句。所述运算符号举例为:加减乘除符号、积分符号、指数符号、导数符号、括号对等。所述逻辑符号举例为:and、or、not、或者用于表示逻辑关系的符号(如用于表示逻辑与的“*”符号等)。
需要说明的是,上述各语句仅为举例。所述内存管理系统还可以管理在更为复杂处理过程中所出现的语句。例如,结合了逻辑符号的数据库语句、包含矩阵处理的语句等。
当所述内存管理系统确定待处理的语句时,执行下述各步骤。
在步骤S1中,所述内存管理系统按照待处理语句中处理标识的处理次序优先级由低到高的顺序,将所述待处理语句逐级分解成多个子语句。
在此,所述处理次序优先级可以按照自然规律而设定,也可以根据经验而定。例如,所述语句为逻辑运算语句,则所述处理次序优先级按照逻辑运算符号的自然规律而设定。又如,所述语句为数据库语句,则所述处理次序优先级可人为设定、或者通过统计数据库语句的不同执行顺序所带来的性能差别而设定处理次序优先级。
在此,所述处理标识用于标识同级子语句之间的逻辑处理关系。
例如,所述待处理语句A1为:2+3×5,预设的处理次序优先级由低到高依次为:“+”、“×”。所述内存管理系统根据所预设的处理次序优先级由低到高的顺序,将所述语句A1依次分解成:(2+a1)、(3×5)两个子语句,其中,a1=3×5,子语句(2+a1)的处理标识为“+”,(3×5)的处理标识为“×”。
又如,所述待处理语句A2为:T1semijoinT2leftjoinT3;所述内存管理系统根据所预设的处理次序优先级由低到高的顺序,将所述语句A2依次分解成:(S1leftjoinT3)、(T1semijoinT2),其中,S1=T1semijoinT2,子语句S1leftjoinT3的处理标识为leftjoin,子语句T1semijoinT2的处理标识为semijoin。
需要说明的是,为了描述方便,在子语句中使用字母(a1、S1)或其他字符等代替了包含高优先级处理标识的子语句。在实际计算机运行过程中,所述内存管理系统可以用类似的字母替代子语句,也可以不予替代。
在一种优选方案中,所述内存管理系统在将所述待处理语句逐级分解成多个子语句之前,按照待处理语句中的处理标识的优先级,将待处理语句中子语句和处理标识基于二叉树结构进行设置。
例如,待处理语句A3为:
T1semijoinT2leftjoinT3leftjoinT4leftjoinT5semijoinT6,且预设语句A3自左向右各处理标识的优先级依次为:T1semijoinT2中的semijoin的优先级最高、leftjoin的优先级居中,T5semijoinT6中的semijoin的优先级最低。所述内存管理系统按照预设的各处理标识的优先级,将该语句A3设置成如图2所示的二叉树结构。其中,S2=L3semijoinT6、L3=L2leftjoinT5、L2=L1leftjoinT4、L1=S1leftjoinT3、S1=T1semijoinT2,再执行步骤S2。
在步骤S2中,所述内存管理系统将分解后的各级含有处理标识的子语句按照优先级保存在多个内存段中。
继续步骤S1中待处理语句A2的示例,所述内容管理系统按照处理次序优先级由低到高的顺序,将子语句S1leftjoinT3保存在内存段B1中,将T1semijoinT2保存在内存段B2中,并可利用工作链表维护各内存段B1、和B2的处理次序优先级。
继续步骤S1中待处理语句A3的示例,所述内存管理系统按照处理次序优先级由低到高的顺序,将S2=L3semijoinT6保存在内存段B3中,将S1leftjoinT3leftjoinT4leftjoinT5保存在内存段B4中,将S1=T1semijoinT2保存在内存段B5中,并利用工作链表维护各内存段B3、B4和B5的处理次序。
优选地,所述内存管理系统采用内存堆栈作为各内存段。
需要说明的是,由同一优先级的多个处理标识所连接的子语句,可以以每个处理标识为单元保存在不同的内存段中。也可以将分解后同一优先级的多个处理标识,以及所连接的子语句保存在同一内存段中。
例如,所述内存管理系统将待处理语句A3按照处理次序优先级由低到高的顺序分别将L3semijoinT6压入预开辟的内存堆栈的栈底得内存段B3',将S1leftjoinT3leftjoinT4leftjoinT5压入该内存堆栈的第二层B4',以及将T1semijoinT2压入该内存堆栈的栈顶B5'。
当将所述语句分配到多个内存段之后,所述内存管理系统通过执行下述步骤S3、S4和S5来逐个释放各内存段。
在步骤S3中,根据处理标识的处理次序优先级由高到低的顺序,确定最高优先级为当前优先级。
在步骤S4中,从当前优先级对应的内存段中读取子语句,进行语句处理,获得处理结果,并将处理结果保存至下一优先级对应的内存段中。
具体地,所述内存管理系统中的处理器从当前优先级对应的内存段中读取子语句,并按照所述子语句中的处理标识进行语句处理,以获得处理结果。所述处理器将处理结果保存至下一优先级对应的内存段中。
例如,继续以待执行语句A3为例进行说明,所述内存管理系统中的处理器读取当前的子语句为“T1semijoinT2”,并执行该子语句对应的将表T1和T2合并的数据库处理,得到的处理结果为将表T1和T2合并后的表T12。所述内存管理系统将该处理结果保存到内存堆栈的第二层,以供内存段第二层中的S1leftjoinT3子语句使用。
为了更为精细的管理各内存段中的处理过程,所述内存段包括:工作区域和输出区域。所述步骤S4包括:步骤S41、S42。(均未予图示)
在步骤S41中,所述内存管理系统从当前优先级对应的内存段的工作区域中读取包含处理标识的子语句,进行语句处理,获得处理结果。
在步骤S42中,所述内存管理系统将所述处理结果保存在当前优先级对应的内存段的输出区域中,并传递至下一优先级对应的内存段的工作区域中。
例如,所述内存管理系统从内存段B5'的工作区域中读取当前的子语句为“T1semijoinT2”,并执行该子语句对应的将表T1和T2合并的数据库处理,得到合并表T12的处理结果。所述内存管理系统将合并表T12先保存在内存段B5'的输出区域,再由输出区域保存了处理结果来触发将处理结果传递至内存段B4'的工作区域的步骤。
在步骤S5中,所述内存管理系统释放当前优先级对应的内存段。
在步骤S6中,所述内存管理系统将下一优先级更新为当前优先级,并返回执行子语句的读取和处理操作,直至所述待处理语句处理完成。
具体地,所述内存管理系统判断当前内存段是否为最后一个内存段,若不是,则将下一优先级更新为当前优先级,并返回执行步骤S4,直至将所述待处理语句处理完成。若是,则结束。
继续步骤S41、S42中的示例,所述内存管理系统在将合并表T12传递至内存段B4'的工作区域后,释放内存段B5',读取内存段B4'的工作区域中的子语句:S1leftjoinT3leftjoinT4leftjoinT5,并按照该子语句执行数据库操作,以得到将合并表T12、表T3、T4、T5的连接查询的处理结果。所述内存管理系统将连接查询的处理结果保存在内存段B4'的输出区域,再将该处理结果传递给内存段B3'的工作区域,并释放内存段B4'。
所述内存管理系统读取内存段B3'工作区域的子语句L3semijoinT6,其中,L3为内存段B4'的输出区域所提供的处理结果。当所述内存管理系统得到子语句L3semijoinT6的处理结果后,得到整个语句A3的处理结果,并保存到内存段B3'的输出区域,再由内存段B3'的输出区域反馈给处理器所执行的程序,释放内存段B3'。
作为一种优选方案,同一优先级的多个处理标识所连接的子语句采用不同的处理次序,处理器和内存占用资源、甚至数据库的执行效率都是不一样的。因此,所述内存管理系统单独开辟了一内存段,以存放对应各子语句的优选处理方式。各所述优选处理方式的确定是通过执行下述各步骤逐步补充完善的。为此,所述步骤4包括:步骤S43、S44、S45、和S46。如图3所示。
在步骤S43中,所述内存管理系统从当前优先级对应的内存段中读取由多个处理标识连接的子语句。
在此,由多个处理标识连接的子语句举例为:1×2÷3、或者S1leftjoinT3leftjoinT4leftjoinT5。
在步骤S44中,所述内存管理系统判断所述子语句的多种处理方式中是否有符合存储在预先单独开辟的内存段中的优选处理方式;若是,则执行步骤S45;若否,则执行步骤S46。
在此,所述子语句包括至少两种处理方式是指对于处理器来说子语句中各处理标识的执行顺序为至少两种。例如,1×2÷3的执行顺序可以是(1×2)÷3、1×(2÷3)、(1÷3)×2等。又如,S1leftjoinT3leftjoinT4leftjoinT5的执行顺序可以是:(S1leftjoinT3)leftjoinT4leftjoinT5、(S1leftjoinT3)leftjoinT5leftjoinT4、(S3leftjoinT4)leftjoinT5leftjoinS1等。可见,由多个处理标识连接的子语句的处理方式可根据处理标识的数量进行组合。
当所述内存管理系统中的处理器判断当前内存段所读取的子语句中的处理标识数量为至少两个时,确定该子语句包含至少两种处理方式,并判断各所述处理方式中是否有符合存储在预先单独开辟的内存段中的优选处理方式;若是,则执行步骤S45;若否,则执行步骤S46。
在步骤S45中,所述内存管理系统按照所符合的优选方式,来进行语句处理,获得处理结果。
在此,本步骤的执行过程与步骤S4中的相同或相似,在此不再详述。
例如,所述内存管理系统中的处理器所读取的子语句为1×2÷3,且所确定的优选方式为(1×2)÷3,则所述内存管理系统中的处理器先执行1×2,后执行2÷3,得到的处理结果为所述处理器将得到的处理结果保存到所读取的内存段的输出区域,并由输出区域传递给下一优先级对应的内存段的工作区域中。
在步骤S46中,所述内存管理系统组合所述子语句的处理方式,并按照各处理方式分别进行语句处理;统计各处理方式的处理性能,并将优选的处理方式保存在所述预先单独开辟的内存段中。
具体地,所述内存管理系统先利用排列组合来确定所读取的子语句的各种处理方式,并按照各处理方式分别进行语句处理,在处理的同时统计各处理方式的处理性能(如,内存占用、数据库执行速度等),并得到优选的处理方式,再将优选的处理方式保存在所述预先单独开辟的内存段中。
接着,所述内存管理系统将所得到的处理结果传递至下一优先级对应的内存段中。
其中,为了减少步骤S46的运算量,提高处理效率,各内存段还包括临时区域。则步骤S46还包括:若至少两个处理方式中包含相同处理部分,则将所述相同处理部分进行处理,获得临时处理结果并保存在所述临时区域中;以及,利用所述临时区域中的各临时处理结果和所对应的各处理方式,分别进行语句处理。
例如,所述内存管理系统确定子语句S1leftjoinT3leftjoinT4leftjoinT5的处理方式包括:(S1leftjoinT3)leftjoinT4leftjoinT5、(S1leftjoinT3)leftjoinT5leftjoinT4,其中,该两种方式均包含:(S1leftjoinT3)的相同处理部分。则所述处理管理系统将(S1leftjoinT3)的临时处理结果保存在临时区域,再利用临时区域中(S1leftjoinT3)的临时处理结果,得到S1leftjoinT3leftjoinT4leftjoinT5子语句的处理结果。如此能够提高筛选优选处理方式过程中的执行效率。
如图4所示,本发明提供一种内存管理系统。所述内存管理系统包括安装在计算机设备中的软件和硬件。所述计算机设备包括:内存、处理器。所述内存管理系统利用处理器对内存进行精细化管理。所述计算机设备包括但不限于:服务器、个人电脑等。
所述内存管理系统特别用于在数据库操作过程中处理数据库语句。其中,所述数据库包括但不限于:MySQL数据库、Oracle数据库等。其中,所述数据库语句包括:用于对数据库执行增删改查操作的语句。例如,所述数据库语句为T1semijoinT2leftjoinT3leftjoinT4leftjoinT5semijoinT6。
所述内存管理系统还用于在逻辑运算过程中处理逻辑运算语句。其中,所述逻辑运算语句包括但不限于:包含运算符号的语句、包含逻辑符号的语句。所述运算符号举例为:加减乘除符号、积分符号、指数符号、导数符号、括号对等。所述逻辑符号举例为:and、or、not、或者用于表示逻辑关系的符号(如用于表示逻辑与的“*”符号等)。
需要说明的是,上述各语句仅为举例。所述内存管理系统还可以管理在更为复杂处理过程中所出现的语句。例如,结合了逻辑符号的数据库语句、包含矩阵处理的语句等。
当所述内存管理系统确定待处理的语句后,执行以下各模块。
所述内存管理系统1包括:语句分解模块11、内存保存模块12、语句处理模块13、内存释放模块14。
所述语句分解模块11用于按照待处理语句中处理标识的处理次序优先级由低到高的顺序,将所述待处理语句逐级分解成多个子语句。
在此,所述处理次序优先级可以按照自然规律而设定,也可以根据经验而定。例如,所述语句为逻辑运算语句,则所述处理次序优先级按照逻辑运算符号的自然规律而设定。又如,所述语句为数据库语句,则所述处理次序优先级可人为设定、或者通过统计数据库语句的不同执行顺序所带来的性能差别而设定处理次序优先级。
在此,所述处理标识用于标识同级子语句之间的逻辑处理关系。
例如,所述待处理语句A1为:2+3×5,预设的处理次序优先级由低到高依次为:“+”、“×”。所述语句分解模块11根据所预设的处理次序优先级由低到高的顺序,将所述语句A1依次分解成:(2+a1)、(3×5)两个子语句,其中,a1=3×5,子语句(2+a1)的处理标识为“+”,(3×5)的处理标识为“×”。
又如,所述待处理语句A2为:T1semijoinT2leftjoinT3;所述语句分解模块11根据所预设的处理次序优先级由低到高的顺序,将所述语句A2依次分解成:(S1leftjoinT3)、(T1semijoinT2),其中,S1=T1semijoinT2,子语句S1leftjoinT3的处理标识为leftjoin,子语句T1semijoinT2的处理标识为semijoin。
需要说明的是,为了描述方便,在子语句中使用字母(a1、S1)或其他字符等代替了包含高优先级处理标识的子语句。在实际计算机运行过程中,所述语句分解模块11可以用类似的字母替代子语句,也可以不予替代。
在一种优选方案中,所述语句分解模块11在将所述待处理语句逐级分解成多个子语句之前,按照待处理语句中的处理标识的优先级,将待处理语句中子语句和处理标识基于二叉树结构进行设置。
例如,待处理语句A3为:
T1semijoinT2leftjoinT3leftjoinT4leftjoinT5semijoinT6,且预设语句A3自左向右各处理标识的优先级依次为:T1semijoinT2中的semijoin的优先级最高、leftjoin的优先级居中,T5semijoinT6中的semijoin的优先级最低。所述语句分解模块11按照预设的各处理标识的优先级,将该语句A3设置成如图2所示的二叉树结构。其中,S2=L3semijoinT6、L3=L2leftjoinT5、L2=L1leftjoinT4、L1=S1leftjoinT3、S1=T1semijoinT2,再执行内存保存模块12。
所述内存保存模块12用于将分解后的各级含有处理标识的子语句按照优先级保存在多个内存段中。
继续语句分解模块11中待处理语句A2的示例,所述内容管理系统按照处理次序优先级由低到高的顺序,将子语句S1leftjoinT3保存在内存段B1中,将T1semijoinT2保存在内存段B2中,并可利用工作链表维护各内存段B1、和B2的处理次序优先级。
继续语句分解模块11中待处理语句A3的示例,所述内存保存模块12按照处理次序优先级由低到高的顺序,将S2=L3semijoinT6保存在内存段B3中,将S1leftjoinT3leftjoinT4leftjoinT5保存在内存段B4中,将S1=T1semijoinT2保存在内存段B5中,并利用工作链表维护各内存段B3、B4和B5的处理次序。
优选地,所述内存保存模块12采用内存堆栈作为各内存段。
需要说明的是,由同一优先级的多个处理标识所连接的子语句,可以以每个处理标识为单元保存在不同的内存段中。也可以将分解后同一优先级的多个处理标识,以及所连接的子语句按照优先级保存在同一内存段中。
例如,所述内存保存模块12将待处理语句A3按照处理次序优先级由低到高的顺序分别将L3semijoinT6压入预开辟的内存堆栈的栈底得内存段B3',将S1leftjoinT3leftjoinT4leftjoinT5压入该内存堆栈的第二层B4',以及将T1semijoinT2压入该内存堆栈的栈顶B5'。
当将所述语句分配到多个内存段之后,所述语句处理模块13和内存释放模块14配合对语句进行处理操作,并逐个释放各内存段。
所述语句处理模块13用于根据处理标识的处理次序优先级由高到低的顺序,确定最高优先级为当前优先级;从当前优先级对应的内存段中读取子语句,进行语句处理,获得处理结果,并将处理结果保存至下一优先级对应的内存段中。
具体地,所述语句处理模块13从当前优先级对应的内存段中读取子语句,并按照所述子语句中的处理标识进行语句处理,以获得处理结果。所述语句处理模块13再将处理结果保存至下一优先级对应的内存段中。
例如,继续以待执行语句A3为例进行说明,所述语句处理模块13读取当前的子语句为“T1semijoinT2”,并执行该子语句对应的将表T1和T2合并的数据库处理,得到的处理结果为将表T1和T2合并后的表T12。所述语句处理模块13将该处理结果保存到内存堆栈的第二层,以供内存段第二层中的S1leftjoinT3子语句使用。
为了更为精细的管理各内存段中的处理过程,所述内存段包括:工作区域和输出区域。所述语句处理模块13还执行以下步骤S41、S42。(均未予图示)
在步骤S41中,所述语句处理模块13从当前优先级对应的内存段的工作区域中读取包含处理标识的子语句,进行语句处理,获得处理结果。
在步骤S42中,所述语句处理模块13将所述处理结果保存在当前优先级对应的内存段的输出区域中,并传递至下一优先级对应的内存段的工作区域中。
例如,所述语句处理模块13从内存段B5'的工作区域中读取当前的子语句为“T1semijoinT2”,并执行该子语句对应的将表T1和T2合并的数据库处理,得到合并表T12的处理结果。所述语句处理模块13将合并表T12先保存在内存段B5'的输出区域,再由输出区域保存了处理结果来触发将处理结果传递至内存段B4'的工作区域的步骤。
所述内存释放模块14用于释放当前优先级对应的内存段,并通知所述语句处理模块13。在此,所述内存释放模块14在释放了内存段后向语句处理模块13发出释放指令,以使语句处理模块13执行下述操作。
所述语句处理模块13用于将下一优先级更新为当前优先级,并返回执行子语句的读取和处理操作,直至所述待处理语句处理完成。
具体地,所述语句处理模块13判断当前内存段是否为最后一个内存段,若不是,则将下一优先级更新为当前优先级,并返回执行从当前优先级对应的内存段中读取子语句,进行语句处理,获得处理结果的过程,直至将所述待处理语句处理完成。若是,则结束。
继续语句A3的示例,所述语句处理模块13在将合并表T12传递至内存段B4'的工作区域后,释放内存段B5',读取内存段B4'的工作区域中的子语句:S1leftjoinT3leftjoinT4leftjoinT5,并按照该子语句执行数据库操作,以得到将合并表T12、表T3、T4、T5的连接查询的处理结果。所述语句处理模块13将连接查询的处理结果保存在内存段B4'的输出区域,再将该处理结果传递给内存段B3'的工作区域,并释放内存段B4'。
所述语句处理模块13读取内存段B3'工作区域的子语句L3semijoinT6,其中,L3为内存段B4'的输出区域所提供的处理结果。当所述语句处理模块13得到子语句L3semijoinT6的处理结果后,得到整个语句A3的处理结果,并保存到内存段B3'的输出区域,再由所述语句处理模块13将内存段B3'的输出区域中的处理结果反馈给处理器所执行的程序,并由内存释放模块14释放内存段B3'。
作为一种优选方案,同一优先级的多个处理标识所连接的子语句采用不同的处理次序,处理器和内存占用资源、甚至数据库的执行效率都是不一样的。因此,所述语句处理模块13单独开辟了一内存段,以存放对应各子语句的优选处理方式。各所述优选处理方式的确定是通过执行下述各步骤逐步补充完善的。为此,所述语句处理模块13执行以下步骤S43、S44、S45、和S46。如图3所示。
在步骤S43中,所述语句处理模块13从当前优先级对应的内存段中读取由多个处理标识连接的子语句。
在此,由多个处理标识连接的子语句举例为:1×2÷3、或者S1leftjoinT3leftjoinT4leftjoinT5。
在步骤S44中,所述语句处理模块13判断所述子语句的多种处理方式中是否有符合存储在预先单独开辟的内存段中的优选处理方式;若是,则执行步骤S45;若否,则执行步骤S46。
在此,所述子语句包括至少两种处理方式是指对于处理器来说子语句中各处理标识的执行顺序为至少两种。例如,1×2÷3的执行顺序可以是(1×2)÷3、1×(2÷3)、(1÷3)×2等。又如,S1leftjoinT3leftjoinT4leftjoinT5的执行顺序可以是:(S1leftjoinT3)leftjoinT4leftjoinT5、(S1leftjoinT3)leftjoinT5leftjoinT4、(S3leftjoinT4)leftjoinT5leftjoinS1等。可见,由多个处理标识连接的子语句的处理方式可根据处理标识的数量进行组合。
当所述语句处理模块13中的处理器判断当前内存段所读取的子语句中的处理标识数量为至少两个时,确定该子语句包含至少两种处理方式,并判断各所述处理方式中是否有符合存储在预先单独开辟的内存段中的优选处理方式;若是,则执行步骤S45;若否,则执行步骤S46。
在步骤S45中,所述语句处理模块13按照所符合的优选方式,来进行语句处理,获得处理结果。
在此,本步骤的执行过程与前述语句处理模块13中的语句处理过程相同或相似,在此不再详述。
例如,所述语句处理模块13所读取的子语句为1×2÷3,且所确定的优选方式为(1×2)÷3,则所述语句处理模块13先执行1×2,后执行2÷3,得到的处理结果为所述语句处理模块13将得到的处理结果保存到所读取的内存段的输出区域,并由输出区域传递给下一优先级对应的内存段的工作区域中。
在步骤S46中,所述语句处理模块13组合所述子语句的处理方式,并按照各处理方式分别进行语句处理;统计各处理方式的处理性能,并将优选的处理方式保存在所述预先单独开辟的内存段中。
具体地,所述语句处理模块13先利用排列组合来确定所读取的子语句的各种处理方式,并按照各处理方式分别进行语句处理,在处理的同时统计各处理方式的处理性能(如,内存占用、数据库执行速度等),并得到优选的处理方式,再将优选的处理方式保存在所述预先单独开辟的内存段中。
接着,所述语句处理模块13将所得到的处理结果传递至下一优先级对应的内存段中。
其中,为了减少步骤S46的运算量,提高处理效率,各内存段还包括临时区域。则所述语句处理模块13还用于若至少两个处理方式中包含相同处理部分,则将所述相同处理部分进行处理,获得临时处理结果并保存在所述临时区域中;以及,利用所述临时区域中的各临时处理结果和所对应的各处理方式,分别进行语句处理。
例如,所述语句处理模块13确定子语句S1leftjoinT3leftjoinT4leftjoinT5的处理方式包括:(S1leftjoinT3)leftjoinT4leftjoinT5、(S1leftjoinT3)leftjoinT5leftjoinT4,其中,该两种方式均包含:(S1leftjoinT3)的相同处理部分。则所述语句处理模块13将(S1leftjoinT3)的临时处理结果保存在临时区域,再利用临时区域中(S1leftjoinT3)的临时处理结果,得到S1leftjoinT3leftjoinT4leftjoinT5子语句的处理结果。如此能够提高筛选优选处理方式过程中的执行效率。
综上所述,本发明通过将复杂的语句按照处理标识的优先级进行分解缓存,再逐级计算、释放内存段,如此实现了对复杂语句内存的分段管理,能够及时释放语句处理过程中占用的内存;另外,利用二叉树结构设置子语句和处理标识,能够提高确定用于存放各子语句的内存段的效率;另外,采用内存堆栈能够解决为各内存段设置工作链表的操作,进一步提高计算机的执行效率;还有,将分解后同一优先级的多个处理标识,以及所连接的子语句按照优先级保存在同一内存段中,有利于减少内存段的寻址次数,提高寻址效率;再者,将各内存段进行分区域管理,实现内存段的流水化作业,提高了处理器和内存之间的交互效率;还有,预存储位于同一内存段中的子语句的处理方式,有利于子语句在重复执行时,以提供最优的处理性能;此外,设置临时区域,有利于在选择处理方式过程中减少处理器的重复运算。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
Claims (10)
1.一种内存管理方法,其特征在于,包括:
按照待处理语句中处理标识的处理次序优先级由低到高的顺序,将所述待处理语句逐级分解成多个子语句,其中,所述处理标识用于标识同级子语句之间的逻辑处理关系;
将分解后的各级含有处理标识的子语句按照优先级保存在多个内存段中;
根据处理标识的处理次序优先级由高到低的顺序,确定最高优先级为当前优先级;
从当前优先级对应的内存段中读取子语句,进行语句处理,获得处理结果,并将处理结果保存至下一优先级对应的内存段中;
释放当前优先级对应的内存段;
将下一优先级更新为当前优先级,并返回执行子语句的读取和处理操作,直至所述待处理语句处理完成。
2.根据权利要求1所述的内存管理方法,其特征在于,所述待处理语句包括:数据库语句和/或逻辑运算语句。
3.根据权利要求1所述的内存管理方法,其特征在于,将所述待处理语句逐级分解成多个子语句之前,还包括:
按照待处理语句中的处理标识的优先级,将待处理语句中子语句和处理标识基于二叉树结构进行设置。
4.根据权利要求1所述的内存管理方法,其特征在于:采用内存堆栈作为各内存段。
5.根据权利要求1所述的内存管理方法,其特征在于,所述将分解后的各级含有处理标识的子语句按照优先级保存在多个内存段中包括:
将分解后同一优先级的多个处理标识,以及所连接的子语句保存在同一内存段中。
6.根据权利要求1所述的内存管理方法,其特征在于,所述内存段包括:工作区域和输出区域;则从当前优先级对应的内存段中读取包含处理标识的子语句,进行语句处理,获得处理结果,并将处理结果保存至下一优先级对应的内存段中包括:
从当前优先级对应的内存段的工作区域中读取包含处理标识的子语句,进行语句处理,获得处理结果;
将所述处理结果保存在当前优先级对应的内存段的输出区域中,并传递至下一优先级对应的内存段的工作区域中。
7.根据权利要求5或6所述的内存管理方法,其特征在于,所述从当前优先级对应的内存段中读取包含处理标识的子语句,进行语句处理,获得处理结果,并将处理结果保存至下一优先级对应的内存段中包括:
从当前优先级对应的内存段中读取由多个处理标识连接的子语句;
判断所述子语句的多种处理方式中是否有符合存储在预先单独开辟的内存段中的优选处理方式;
若是,则按照所符合的优选方式,来进行语句处理,获得处理结果;
若否,则组合所述子语句的处理方式,并按照各处理方式分别进行语句处理;统计各处理方式的处理性能,并将优选的处理方式保存在所述预先单独开辟的内存段中。
8.根据权利要求7所述的内存管理方法,其特征在于,所述内存段中包含临时区域,则所述组合子语句的处理方式,并按照各处理方式分别进行语句处理包括:
若至少两个处理方式中包含相同处理部分,则将所述相同处理部分进行处理,获得临时处理结果并保存在所述临时区域中;
利用所述临时区域中的各临时处理结果和所对应的各处理方式,分别进行语句处理。
9.一种内存管理系统,其特征在于,包括:
语句分解模块,用于按照待处理语句中处理标识的处理次序优先级由低到高的顺序,将所述待处理语句逐级分解成多个子语句,其中,所述处理标识用于标识同级子语句之间的逻辑处理关系;
内存保存模块,用于将分解后的各级含有处理标识的子语句按照优先级保存在多个内存段中;
语句处理模块,用于根据处理标识的处理次序优先级由高到低的顺序,确定最高优先级为当前优先级;从当前优先级对应的内存段中读取子语句,进行语句处理,获得处理结果,并将处理结果保存至下一优先级对应的内存段中;
内存释放模块,用于释放当前优先级对应的内存段,并通知所述语句处理模块;
所述语句处理模块还用于将下一优先级更新为当前优先级,并返回执行子语句的读取和处理操作,直至所述待处理语句处理完成。
10.根据权利要求9所述的内存管理系统,其特征在于,所述内存段包括:工作区域和输出区域;则所述语句处理模块用于从当前优先级对应的内存段的工作区域中读取包含处理标识的子语句,进行语句处理,获得处理结果;以及,将所述处理结果保存在当前优先级对应的内存段的输出区域中,并传递至下一优先级对应的内存段的工作区域中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610073294.XA CN105786616B (zh) | 2016-02-02 | 2016-02-02 | 内存管理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610073294.XA CN105786616B (zh) | 2016-02-02 | 2016-02-02 | 内存管理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105786616A true CN105786616A (zh) | 2016-07-20 |
CN105786616B CN105786616B (zh) | 2019-03-12 |
Family
ID=56402559
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610073294.XA Active CN105786616B (zh) | 2016-02-02 | 2016-02-02 | 内存管理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105786616B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110134941A (zh) * | 2019-04-01 | 2019-08-16 | 贵州力创科技发展有限公司 | 一种复合表达式解析方法及系统 |
CN111176827A (zh) * | 2019-08-28 | 2020-05-19 | 腾讯科技(深圳)有限公司 | 一种数据预热的方法及相关装置 |
CN112596908A (zh) * | 2020-12-28 | 2021-04-02 | 中孚安全技术有限公司 | 一种基于完全二叉树的内存管理方法及系统 |
CN112990421A (zh) * | 2019-12-02 | 2021-06-18 | 杭州海康威视数字技术股份有限公司 | 优化深度学习网络的运行过程的方法、装置及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080294648A1 (en) * | 2004-11-01 | 2008-11-27 | Sybase, Inc. | Distributed Database System Providing Data and Space Management Methodology |
US20090320037A1 (en) * | 2008-06-19 | 2009-12-24 | Parag Gokhale | Data storage resource allocation by employing dynamic methods and blacklisting resource request pools |
CN101901250A (zh) * | 2010-06-08 | 2010-12-01 | 中兴通讯股份有限公司 | 一种内存数据库及其数据处理方法 |
CN103001971A (zh) * | 2012-12-25 | 2013-03-27 | 成都科来软件有限公司 | 一种网络数据包解析方法 |
-
2016
- 2016-02-02 CN CN201610073294.XA patent/CN105786616B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080294648A1 (en) * | 2004-11-01 | 2008-11-27 | Sybase, Inc. | Distributed Database System Providing Data and Space Management Methodology |
US20090320037A1 (en) * | 2008-06-19 | 2009-12-24 | Parag Gokhale | Data storage resource allocation by employing dynamic methods and blacklisting resource request pools |
CN101901250A (zh) * | 2010-06-08 | 2010-12-01 | 中兴通讯股份有限公司 | 一种内存数据库及其数据处理方法 |
CN103001971A (zh) * | 2012-12-25 | 2013-03-27 | 成都科来软件有限公司 | 一种网络数据包解析方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110134941A (zh) * | 2019-04-01 | 2019-08-16 | 贵州力创科技发展有限公司 | 一种复合表达式解析方法及系统 |
CN111176827A (zh) * | 2019-08-28 | 2020-05-19 | 腾讯科技(深圳)有限公司 | 一种数据预热的方法及相关装置 |
CN111176827B (zh) * | 2019-08-28 | 2024-01-30 | 腾讯科技(深圳)有限公司 | 一种数据预热的方法及相关装置 |
CN112990421A (zh) * | 2019-12-02 | 2021-06-18 | 杭州海康威视数字技术股份有限公司 | 优化深度学习网络的运行过程的方法、装置及存储介质 |
CN112990421B (zh) * | 2019-12-02 | 2023-09-05 | 杭州海康威视数字技术股份有限公司 | 优化深度学习网络的运行过程的方法、装置及存储介质 |
CN112596908A (zh) * | 2020-12-28 | 2021-04-02 | 中孚安全技术有限公司 | 一种基于完全二叉树的内存管理方法及系统 |
CN112596908B (zh) * | 2020-12-28 | 2022-09-16 | 中孚安全技术有限公司 | 一种基于完全二叉树的内存管理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105786616B (zh) | 2019-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105786616A (zh) | 内存管理方法及系统 | |
CN106873949A (zh) | 代码生成方法及其装置 | |
CN110991456A (zh) | 票据识别方法及装置 | |
CN108021449A (zh) | 一种协程实现方法、终端设备及存储介质 | |
CN112418798A (zh) | 信息审核方法、装置、电子设备及存储介质 | |
CN107908714A (zh) | 一种数据归并排序方法及装置 | |
CN112434952A (zh) | 业务数据规则判断方法、装置、设备及存储介质 | |
CN107977504B (zh) | 一种非对称堆芯燃料管理计算方法、装置及终端设备 | |
CN113902120A (zh) | 异构云解算平台混合计算任务动态自适应划分调度方法及系统 | |
CN112528013A (zh) | 文本摘要提取方法、装置、电子设备及存储介质 | |
CN112417899A (zh) | 文字翻译方法、装置、计算机设备和存储介质 | |
US8984455B1 (en) | Methods for generating schematic diagrams and apparatuses using the same | |
CN107729479A (zh) | 一种生成单据的编号的方法及装置 | |
CN113342897A (zh) | 一种数据同步的方法及装置 | |
CN110162487A (zh) | 一种快速统计重复次数方法、装置及存储介质 | |
CN112446781A (zh) | 风控数据生成方法、装置、设备及计算机可读存储介质 | |
CN111881661B (zh) | 基于电子表格的数据处理方法、装置、设备及存储介质 | |
CN113434820B (zh) | 图表y轴坐标优化方法、装置、设备及存储介质 | |
CN115392175B (zh) | 一种电路设计错误处理方法、装置、介质 | |
CN114253960B (zh) | 面向电子发票报销入账和归档一体化的业务中台系统 | |
US6628293B2 (en) | Format varying computer system | |
US20230129676A1 (en) | Compiler, generation method, chip, and execution method | |
JP6751358B2 (ja) | 運用管理支援システムおよび運用管理支援方法 | |
CN116302492A (zh) | 一种服务器内存防溢出方法、装置、设备及存储介质 | |
CN112529536A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |