CN112069198B - Sql解析优化方法和装置 - Google Patents
Sql解析优化方法和装置 Download PDFInfo
- Publication number
- CN112069198B CN112069198B CN202010686185.1A CN202010686185A CN112069198B CN 112069198 B CN112069198 B CN 112069198B CN 202010686185 A CN202010686185 A CN 202010686185A CN 112069198 B CN112069198 B CN 112069198B
- Authority
- CN
- China
- Prior art keywords
- node
- pool
- nodes
- sql
- type
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种SQL解析优化方法和装置,所述方法包括:基于SQL语句发起用于申请与SQL语句相匹配的类型的节点的请求;根据申请的节点类型,从已建立的节点池中查找对应类型的空闲节点,其中,所述已建立的节点池中包括不同类型的节点链表,每一节点链表包括多个节点,所述节点链表中每个节点的数据为指向该节点内存的指针;在所述节点池中存在对应类型的空闲节点的情况下,从所述空闲节点中拿出一个空闲节点作为申请的节点。本发明实施例对现有技术中SQL语句的解析进行了优化,通过构建节点池,避免了反复构建然后析构造成的解析效率低下的问题。
Description
技术领域
本发明涉及大数据应用中的数据库技术,尤其涉及一种SQL解析优化方法和装置。
背景技术
结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
现有技术中,用户在编辑器中编辑好的SQL语句会以字符串形式交由语法解析器进行解析,将关键信息、子句构成节点,最终构建出整个语法树。
SQL语句中的SQL关键词可分为保留关键词和非保留关键词,其中,保留关键词用于定义、操作和访问数据库,通常不用它们做标识符。非保留关键词只是在特定的环境里有特殊的含义,而在其它环境里可以用做标识符。在语法解析时,保留关键词不需要生成节点,而非保留关键词需要生成节点。
现有的SQL99标准允许使用某些非保留关键词作为表名、列名或者函数名等,虽然这样会方便用户的使用,不用记忆太多关键词,但是却会导致词法分析时,每次解析出一个词汇时,编译器中的词法分析器并不能区分其是无需生成节点的关键词,还是需要生成节点的关键词(如表名、列名等)。因此在现有技术中,词法分析器每次解析出一个词汇都会申请内存并创建节点。然后再由编译器中的语法分析器负责判断是否确实需要生成节点,从而决定是保留还是释放由词法分析器构建的节点。然而由于使用非保留关键词的情况并不常见,而关键词的使用却比较频繁,所以就会导致某些类型的节点会被反复创建然后析构,不停地申请内存然后释放,最终导致SQL语句解析效率的低下。
如何进一步优化SQL解析过程来提高SQL解析的速度和效率,成为一个亟待解决的问题。
发明内容
有鉴于此,本发明实施例提供了一种SQL解析优化方法和装置,通过优化SQL解析过程来提高解析速度和效率。
本发明的一个方面,提供了一种SQL解析优化方法,该方法包括以下步骤:
基于SQL语句发起用于申请与所述SQL语句相匹配的类型的节点的请求;
根据申请的节点类型,从已建立的节点池中查找对应类型的空闲节点,其中,所述已建立的节点池中包括不同类型的节点链表,每一节点链表包括多个节点,所述节点链表中每个节点包括数据体和指向节点内存的指针;
在所述节点池中存在对应类型的空闲节点的情况下,从所述节点池中拿出一个对应类型的空闲节点作为申请的节点。
可选地,所述节点链表为空闲节点链表。
可选的,所述方法还包括:在所述节点池中不存在对应类型的空闲节点的情况下,在堆上分配新节点的内存,将所述新节点作为申请的节点。
可选地,所述方法还包括:
在接收SQL语句之前,通过节点链表构建所述节点池,为所述节点池中的节点提供内存;其中,不同类型的节点包含在不同类型的节点链表中。
可选地,所述基于SQL语句发起用于申请与所述SQL语句相匹配的类型的节点的请求,包括:基于SQL语句确定与所述SQL语句相匹配的节点类型,并通过节点池对应接口来申请相匹配的类型的节点。
可选地,所述方法还包括:在释放申请的节点时,根据申请的节点的类型查找对应的节点链表,在对应的节点链表的长度不超过指定阈值的情况下,将所述节点放入对应的节点链表中。
可选地,所述方法还包括:在将节点放入对应的节点列表的情况下,将外部指向所述节点的指针置空。
可选地,所述方法还包括:在释放申请的节点时,根据申请的节点的类型查找对应的节点链表,在对应的节点链表的长度超过指定阈值的情况下,删除申请的节点并释放该节点内存。
可选地,所述方法还包括:在语句解析模块析构时,释放所述节点池内的所有节点的内存。
本发明的另一方面,还提供了一种SQL解析优化装置,其包括处理器和存储器,所述存储器中存储有计算机指令,所述处理器用于执行所述存储器中存储的计算机指令,当所述计算机指令被处理器执行时该装置实现如前所述方法的步骤。
可选地,所述处理器包括解析器和节点池模块;所述解析器用于解析SQL语句,并基于解析的SQL语句向节点池模块申请所需类型的节点;所述节点池模块用于基于解析器的请求从已构建的节点池中查找对应类型的空闲节点,并从节点池中取出对应类型的空闲节点供解析器使用。
本发明的又一方面,还提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现如前所述方法的步骤。
本发明实施例提供的SQL解析优化和装置,对现有技术中SQL语句的解析进行了优化,通过构建节点池,来避免反复地构建然后析构造成的解析效率低下的问题。
进一步地,在释放节点时,本发明实施例也并不是真正的释放节点,而是将节点放回节点池中并置为空闲的状态以备将来的使用。
本发明实施例的SQL解析优化和装置通过使用节点池来大大提高了解析模块进行语句解析的速度。
本发明的附加优点、目的,以及特征将在下面的描述中将部分地加以阐述,且将对于本领域普通技术人员在研究下文后部分地变得明显,或者可以根据本发明的实践而获知。本发明的目的和其它优点可以通过在书面说明及其权利要求书以及附图中具体指出的结构实现到并获得。
本领域技术人员将会理解的是,能够用本发明实现的目的和优点不限于以上具体所述,并且根据以下详细说明将更清楚地理解本发明能够实现的上述和其他目的。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。附图中的部件不是成比例绘制的,而只是为了示出本发明的原理。为了便于示出和描述本发明的一些部分,附图中对应部分可能被放大,即,相对于依据本发明实际制造的示例性装置中的其它部件可能变得更大。在附图中:
图1为本发明一实施例中SQL解析方法的流程示意图。
图2为本发明实施例中构建的节点池中链表的结构示例。
图3为本发明一实施例中申请节点的流程示意图。
图4为本发明一实施例中释放节点的流程示意图。
图5为本发明一实施例中SQL语句解析优化装置的结构示意图。
图6为本发明一实施例中处理器中的部分结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。
在此,还需要说明的是,为了避免因不必要的细节而模糊了本发明,在附图中仅仅示出了与根据本发明的方案密切相关的结构和/或处理步骤,而省略了与本发明关系不大的其他细节。
应该强调,术语“包括/包含”在本文使用时指特征、要素、步骤或组件的存在,但并不排除一个或更多个其它特征、要素、步骤或组件的存在或附加。
发明人在进行SQL语句词法、语法解析器的研究时,发现现有技术中SQL语句的解析仍然可以进行优化,经过对节点使用的研究后发现,解析效率低下一部分是由于节点无用却反复地构建然后析构造成的。本发明实施例中通过构建节点池来解决了反复地构建然后析构节点造成的解析效率低下的问题,即在申请节点时,从建立的节点池中获取相应类型的节点;而释放节点时,并不是真正的释放,而是将节点置为空闲的状态以备将来的使用。
图1所示为本申请一实施例中SQL解析优化方法的流程示意图,该方法可以由处理器(如CPU)来实现。如图1所示,该方法包括以下步骤:
步骤S100,构建节点池,为节点池中的节点提供内存。
在本发明一实施例中,可以在解析模块(如解析器,Parser)的初始化过程中,构建节点池,构建的节点池中可包括一种或多种类型的节点。也就是说,针对SQL语句,可创建的节点有好几种类型,关键词节点是节点的一种类型,其他的节点类型可包括但不限于:SELECT语句节点、表达式节点、表名节点和整型常量节点等等。在本发明实施例中,在解析模块的初始化步骤中,可利用在CPU中设置的节点池模块来构建包含一种或多种类型节点的节点池,并为这一种或多种类型节点中每一种类型的节点都申请一定数量的内存,以备后续使用。构建的节点池可位于缓存中。在本发明另选实施例中,也可以利用CPU中的其他模块来构建节点池。
在本发明实施例中,可将不同类型的节点放入各类型对应的不同节点链表内进行存储以备使用,在这种情况下,构建的节点池可包括不同类型的节点链表,每一节点链表可包括多个节点,各节点链表中每个节点的信息包括用于存储数据体的数据域和用于存储指向下一节点内存的指针的指针域。其中,各节点的数据体具有根据节点类型预先配置好的固定的节点结构。作为示例,对于一个整型常量节点,其数据体中可存放一个整型常量。图2为本发明一实施例中构建的节点池中链表的结构示例,图2所示的链表包括链表头和各个节点信息,其中每个节点的信息包括数据体和指向下一节点内存的指针。
图2中仅示出了包含部分节点的节点链表作为示例,在实际的节点结构中,链表中的节点数可以预先设定或在构建时设定。在构建的节点池中,针对不同类型的节点,对应的节点链表的长度(节点数)可以相同,也可以不同。
在本发明实施例中,构建的节点池为空闲节点池,也即,构建的节点池中的节点链表为空闲节点链表,即链表中的节点均为空闲节点。每次在需要一个节点结构体的实例时,如果按照现有的方式,需要先在堆上分配空间来存储结构体数据,当反复构建实例又析构时,就会浪费大量时间。在本发明实施例中,节点池的作用是,通过提前先构建很多节点的实例,放在节点链表里,节点内存申请完毕会就放在空闲节点链表中备用,使得每次需要节点实例时(即需要再次构建节点时),不需要重新去申请内存空间,而是可以直接从链表中弹出一个节点即可,即从节点链表中拿取。
步骤S110,基于SQL语句申请相应类型的节点。
建立节点池后,解析器可基于SQL语句按照预定的匹配规则进行节点类型匹配,基于匹配结果识别需要申请的节点类型,并向节点池模块发送申请对应类型节点(与SQL语句相匹配的类型的节点)的请求,以向节点池模块申请对应类型的节点,其中,预定的匹配规则为用于识别节点类型的节点类型匹配规则。解析器通常包括词法解析器和语法解析器,其中词法解析器会用到关键词节点,语法解析器会用到SELECT语句节点、表达式节点、表名节点等类型的节点,由于词法解析器和语法解析器对不同类型节点的使用属于现有技术,在此不再赘述。
该SQL语句为编辑器编辑好的SQL语句,SQL语句中的关键词可以是保留关键词或非保留关键词等。作为示例,假如SQL语句中有“1+2”这个字段,词法解析器把1和2各解析成一个节点,即一共解析成两个关键词节点,而语法解析器可将这两个节点和中间的加号一起解析成一个表达式节点。这样,对于词法解析器而言,其可基于SQL语句申请关键词节点,语法解析器可以申请表达式节点。
步骤S120,节点池模块根据解析器申请的节点类型,从已建立的节点池中查找对应类型的空闲节点。
更具体地,节点池模块根据解析器申请的节点类型,可从与申请的节点类型对应的节点链表中查找对应类型的空闲节点。
步骤S130,在节点池中存在对应类型的空闲节点的情况下,从节点池的空闲节点中拿出一个空闲节点作为申请的节点。
例如,在相应链表中存在对应类型的空闲节点的情况下,节点池模块从该链表中直接弹出一个空闲节点作为申请的节点,如弹出链表中的第一个空闲的节点作为申请的节点。在此,所谓的弹出链表内的一个节点,就是将这个节点从链表中移除,然后获得该节点内存的地址,直接使用对应的内存。
在本发明实施例中,在节点池中不存在对应类型的空闲节点的情况下,则可以如现有的构建节点的方式一样,在堆上分配新节点的内存,将分配的新节点作为申请的节点。
在本发明一些实施例中,每次在申请节点时,并不直接通过new操作符或者malloc函数(动态内存分配函数)来申请内存,而是通过已经构建的节点池暴露的接口来实现。通过节点池暴露的接口,可查询池内是否有空闲的节点,即先查询对应节点的空闲链表内是否包含空闲节点。如果有空闲节点,则弹出链表内的首个节点并返回。如果没有空闲节点,则利用现有的构建节点的方式,如可直接用new操作符或者malloc函数申请一个新节点的内存并将新申请的节点信息返回。
在本发明一实施例中,在节点使用完毕后,在解析器要释放申请的节点时,不直接通过delete操作符或者free函数进行释放,而是将节点交由回节点池进行管理。更具体地,可根据申请的节点的类型查找对应的节点链表,在对应的节点链表的长度不超过指定阈值的情况下,将节点放入对应的节点链表中。
本发明实施例描述的如上SQL解析优化方法,每次在需要使用新节点而申请新节点时,可以通过事先建立的节点池暴露的接口来从已建立的节点池中选择适应类型的接口来申请节点,而无需使得对应类型的节点会被反复创建然后析构,从而大大提高了解析效率。
图3所示为本发明一实施例中申请节点流程的示例。如图3所示,该流程包括如下步骤:
步骤S31,解析器基于SQL语句的节点配型匹配结果确定要申请的节点类型,并通过已构建的节点池所暴露的接口来申请节点。
步骤S32,节点池模块根据申请节点的类型,从节点池中查找对应的空闲链表,以确定节点池内是否有空闲的节点。
可通过查询对应节点的空闲链表内是否包含节点来确定节点池内是否有空闲的节点。
步骤S33,节点池模块确定查找到的对应空闲链表是否为空,或者是否查找到非空的对应空闲链表。如果为空,或者说未查找到非空的空闲链表,则执行步骤S34-S35,即再申请一个节点的内存并将其返回;否则执行步骤S36。
步骤S34,节点池模块通过new操作符或者malloc函数申请一个新节点的内存。
步骤S35,节点池模块将新申请的节点内存信息返回给解析器。
步骤S36,如果节点池模块找到对应的空闲链表且链表不为空,则将非空的空闲链表的第一个节点弹出并返回给解析器。
该弹出的节点作为申请的节点,该弹出的节点内含有数据体。弹出链表内的节点,是指将这个节点从节点链表中移除,然后可直接使用对应的内存。
图4所示为本发明一实施例中节点使用完毕后释放节点内存的流程示例,该流程可由语法解析器实现。如图4所示,该流程包括如下步骤:
步骤S41,解析器释放节点,将节点交还给节点池模块。
步骤S42,节点池模块根据解析器释放的节点的类型,找到该类型对应的节点链表。
现有的节点释放流程中,会通过delete操作符或者free函数释放节点。而在本发明实施例中,节点使用完毕以后,并不是直接通过delete操作符或者free函数释放节点,而是将节点交由节点池模块,由节电池模块将节点放入节电池中进行管理。节点池模块找到对应类型的空闲节点链表之后,进行步骤S43。
步骤S43,节点池模块确定对应类型的空闲节点链表内存储的节点的数量(即链表长度)是否超过设定的阈值。
该阈值可以与初始构建的空闲节点链表的长度一致,也可以大于初始构建的空闲节点链表的长度,并且该阈值可以后续进行更改。
如果对应类型的链表长度超过设定的阈值,则执行步骤S44。如果对应类型的链表长度没有超过设定的阈值,则执行步骤S45。
作为另选实施例,也可以预先设定整个节点池中节点数量的阈值,这样,在本步骤S43中,可以确定将使用完毕后的节点放入节点池内之后,节点池内节点的数量是否超过设定的整个节点池中节点数量阈值。如果超过,执行步骤S44,否则执行步骤S45。
步骤S44,由解析器使用delete操作符将节点的内存释放。在本发明另一实施例中,也可以利用free函数来释放节点内存。
步骤S45,节点池模块将节点放入对应类型的链表内。
步骤S46,节点池模块将放入对应类型链表内的节点置为空闲状态。
作为示例,将节点放回对应的空闲节点链表中之后,将外部指向改节点的指针置空,以防野指针。
外部指针置空时对外界(调用者)相当于销毁了这个指针指向的内存。下次再使用这个节点的时候,外界就会产生新的指针指向这个节点。
也即,在本发明实施例中,只有在对应类型的链表中空闲节点的数量超过了指定阈值,才对节点内存进行释放。
此外,在解析模块析构时,释放整个节点池的内存。
在本发明实施例中,解析模块在要退出运行时,析构构建的节点池,即释放整个节点池的内存。
如上所述的实施例的SQL语句解析优化方法,对现有技术中SQL语句的解析过程进行了优化,通过构建节点池,来避免反复地构建然后析构造成的解析效率低下的问题。
相应地,本发明实施例还提供了一种SQL语句解析优化装置,如图5所示,该装置可包括通用的计算机硬件结构,其至少包括处理器501和存储器502。处理器501和存储器502通过总线503连接。存储器502适于存储处理器501可执行的一条或多条指令或程序。该一条或多条指令或程序被处理器501执行以实现上述SQL解析优化方法中的步骤。
上述处理器501可以是独立的微处理器,也可以是一个或者多个微处理器的集合。由此,处理器501通过执行存储器502所存储的命令,从而执行如上所述的本发明实施例的方法流程实现对于数据的处理和对于其他装置的控制。总线503将上述多个组件连接在一起,同时可将上述组件连接到显示控制器504和显示装置以及输入/输出(I/O)装置505。输入/输出(I/O)装置505可以是鼠标、键盘、调制解调器、网络接口、触控输入装置、体感输入装置、打印机以及本领域公知的其他装置。典型地,输入/输出(I/O)装置505通过输入/输出(I/O)控制器506与系统相连。
存储器502可以存储软件组件,例如操作系统、通信模块、交互模块以及应用程序。以上所述的每个模块和应用程序都对应于完成一个或多个功能和在发明实施例中描述的方法的一组可执行程序指令。
在本发明一实施例中,所述处理器为CPU,如图6所示,其可以包括解析器和节点池模块,其中,解析器包括词解析器和语法解析器,用于解析SQL语句,并基于解析的SQL语句向节点池模块申请所需类型的节点;节点池模块用于构建包括空闲节点的节点池,并基于解析器的请求从构建的节点池中查找对应类型的节点,并从节点池中取出对应类型的空闲节点供解析器使用,并在解析器使用完节点后,还可以将节点放回至节点池中。在本发明其他实施例中,节点池模块还可以拆分为更多个子模块,但这些子模块同样可以协同实现节点池模块的功能。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器501执行时以实现上述SQL语句解析优化方法的步骤。该计算机可读存储介质可以是有形存储介质,诸如光盘、U盘、软盘、硬盘等。
需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
本领域普通技术人员应该可以明白,结合本文中所公开的实施方式描述的各示例性的组成部分、系统和方法,能够以硬件、软件或者二者的结合来实现。具体究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读存储介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。
还需要说明的是,本发明中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本发明不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
本发明中,针对一个实施方式描述和/或例示的特征,可以在一个或更多个其它实施方式中以相同方式或以类似方式使用,和/或与其他实施方式的特征相结合或代替其他实施方式的特征。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (11)
1.一种SQL解析优化方法,其特征在于,该方法包括以下步骤:
接收SQL语句,基于SQL语句发起用于申请与所述SQL语句相匹配的类型的节点的请求;
根据申请的节点类型,从已建立的节点池中查找对应类型的空闲节点,其中,所述已建立的节点池中包括不同类型的节点链表,每一节点链表包括多个节点,所述节点链表中每个节点包括数据体和指向节点内存的指针,节点池中各节点的数据体具有根据节点类型预先配置好的固定的节点结构;所述节点类型包括:关键词节点、SELECT语句节点、表达式节点和表名节点;
在所述节点池中存在对应类型的空闲节点的情况下,从所述节点池中弹出一个对应类型的空闲节点作为申请的节点,弹出的节点内含有数据体且弹出的节点被从相应节点链表中移出;
所述基于SQL语句发起用于申请与所述SQL语句相匹配的类型的节点的请求,包括:
解析器基于SQL语句按照预定的节点类型匹配规则进行节点类型匹配,由解析器中的词法解析器基于SQL语句确定与所述SQL语句相匹配的关键词节点类型,解析器中的语法解析器基于SQL语句确定与所述SQL语句相匹配的与关键词节点类型不同的节点类型,并通过节点池对应接口来申请相匹配的类型的节点。
2.根据权利要求1所述的方法,其特征在于,
所述节点链表为空闲节点链表。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述节点池中不存在对应类型的空闲节点的情况下,在堆上分配新节点的内存,将所述新节点作为申请的节点。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在接收SQL语句之前,通过节点链表构建所述节点池,为所述节点池中的节点提供内存;
其中,不同类型的节点包含在不同类型的节点链表中。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在释放申请的节点时,根据申请的节点的类型查找对应的节点链表,在对应的节点链表的长度不超过指定阈值的情况下,不通过delete操作符或者free函数进行释放,将所述节点放入节点池中的对应的节点链表中。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在将节点放入对应的节点列表的情况下,将外部指向所述节点的指针置空。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在释放申请的节点时,根据申请的节点的类型查找对应的节点链表,在对应的节点链表的长度超过指定阈值的情况下,删除申请的节点并释放该节点内存。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在语句解析模块析构时,释放所述节点池内的所有节点的内存。
9.一种SQL解析优化装置,包括处理器和存储器,其特征在于,所述存储器中存储有计算机指令,所述处理器用于执行所述存储器中存储的计算机指令,当所述计算机指令被处理器执行时该装置实现如权利要求1至8中任意一项所述方法的步骤。
10.根据权利要求9所述的装置,其特征在于,所述处理器包括解析器和节点池模块;
所述解析器用于解析SQL语句,并基于解析的SQL语句向节点池模块申请所需类型的节点;
所述节点池模块用于基于解析器的请求从已构建的节点池中查找对应类型的空闲节点,并从节点池中取出对应类型的空闲节点供解析器使用。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至8中任意一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010686185.1A CN112069198B (zh) | 2020-07-16 | 2020-07-16 | Sql解析优化方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010686185.1A CN112069198B (zh) | 2020-07-16 | 2020-07-16 | Sql解析优化方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112069198A CN112069198A (zh) | 2020-12-11 |
CN112069198B true CN112069198B (zh) | 2021-09-10 |
Family
ID=73657496
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010686185.1A Active CN112069198B (zh) | 2020-07-16 | 2020-07-16 | Sql解析优化方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112069198B (zh) |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1780228A (zh) * | 2004-11-25 | 2006-05-31 | 中兴通讯股份有限公司 | 一种前台网元上报数据的接收方法 |
CN103226598B (zh) * | 2013-04-22 | 2016-06-22 | 华为技术有限公司 | 访问数据库的方法和装置以及数据库管理系统 |
CN104391895A (zh) * | 2014-11-12 | 2015-03-04 | 珠海世纪鼎利通信科技股份有限公司 | 一种基于云计算的sql语句处理系统 |
US10255335B2 (en) * | 2015-11-06 | 2019-04-09 | Cloudera, Inc. | Database workload analysis and optimization visualizations |
CN110019291A (zh) * | 2017-09-04 | 2019-07-16 | 中国移动通信集团浙江有限公司 | 一种sql解析方法和sql解析器 |
CN111177017B (zh) * | 2018-11-09 | 2022-05-27 | 炬芯科技股份有限公司 | 一种内存分配方法及装置 |
CN111221840B (zh) * | 2018-11-23 | 2023-05-30 | 阿里云计算有限公司 | 数据处理方法及装置、数据缓存方法、存储介质、系统 |
CN110471862A (zh) * | 2019-07-16 | 2019-11-19 | 杭州电子科技大学 | 一种可编程控制器的变量地址分配系统及方法 |
CN110515973B (zh) * | 2019-08-30 | 2022-02-18 | 上海达梦数据库有限公司 | 一种数据查询的优化方法、装置、设备及存储介质 |
CN111309757B (zh) * | 2020-05-14 | 2020-09-01 | 深圳市赢时胜信息技术股份有限公司 | 一种HBase的SQL解释器和优化方法 |
-
2020
- 2020-07-16 CN CN202010686185.1A patent/CN112069198B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112069198A (zh) | 2020-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4931928A (en) | Apparatus for analyzing source code | |
CN108549538B (zh) | 一种代码检测方法、装置、存储介质及测试终端 | |
US6836890B1 (en) | Methods and systems for message translation and parsing of data structures in a distributed component architecture | |
US7143345B2 (en) | Method and system for multiple level parsing | |
US8171052B2 (en) | Information search system, method and program | |
EP1777629A1 (en) | Method and apparatus for automatic form filling | |
US20030217071A1 (en) | Data processing method and system, program for realizing the method, and computer readable storage medium storing the program | |
CN111177788A (zh) | Hive的动态脱敏方法及动态脱敏系统 | |
EP3848821A1 (en) | Evaluating xml full text search | |
CN112860727B (zh) | 基于大数据查询引擎的数据查询方法、装置、设备及介质 | |
US20090125542A1 (en) | Systems and Methods for Modular Information Extraction | |
US7827537B2 (en) | Searching computer programs that use different semantics | |
CN111324607B (zh) | Sql语句复用方法和装置 | |
CN113419721B (zh) | 基于web的表达式编辑方法、装置、设备和存储介质 | |
CN112069198B (zh) | Sql解析优化方法和装置 | |
CN117076491A (zh) | 一种数据处理方法、存储介质与设备 | |
US7099886B2 (en) | Method and apparatus for identifying programming object attributes | |
JP3292160B2 (ja) | Cobol言語のソースプログラムのコンバージョン方法及び装置並びに記録媒体 | |
KR100659370B1 (ko) | 시소러스 매칭에 의한 문서 db 형성 방법 및 정보검색방법 | |
US7624343B2 (en) | Performance optimization for text layout processing | |
CN117909367A (zh) | 缓存处理方法、电子设备以及存储介质 | |
KR20070097660A (ko) | 이동통신 단말기에서 에스큐엘을 이용한 멀티미디어 파일관리 방법 | |
CN117171189A (zh) | 数据处理方法、装置及设备 | |
CN113868284A (zh) | 数据库语句转换方法和装置、存储介质及电子设备 | |
CN114168144A (zh) | Es-jdbc连接sql-dml的实现方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |