用于索引编译以优化索引使用的系统、方法和设备技术方案

技术编号:16048991 阅读:48 留言:0更新日期:2017-08-20 08:42
本发明专利技术公开了用于索引编译以优化索引的系统、方法和设备。在一种实施方式中,一旦下发CREATE INDEX命令,本发明专利技术首先检查所请求的用户是否必须编译所述索引,如果是,则生成对应的C‑文件,然后从所述C‑文件生成DLL并利用服务器加载所述DLL。所述系统、方法和设备在定义期间在本地编译和生成对应于每个INDEX的INDEX DLL,所述INDEX DLL将包含基于索引列的数据类型对INDEX执行操作所需的所有结构和方法。

【技术实现步骤摘要】
【国外来华专利技术】用于索引编译以优化索引使用的系统、方法和设备
本文中所描述的专利技术主题总体涉及关系数据库管理系统,更具体地,涉及通过索引编译增强任何查询执行期间中央处理单元的性能。
技术介绍
结构化查询语言(structuredquerylanguage,SQL)是一种用于存储、检索和查询关系数据库系统中保存的数据的数据库查询和编程语言。连续查询语言(sequentialquerylanguage,SQL)的开发始于1974年,由Boyce和Chamberlin提出,当时被称为SEQUEL;1976年,IBM公司的Sanjese研究所在开发RDBMSSYSTEMR时对SQL作了更改;ORACLE公司于1979年首次发布了基于SQL的商业化RDBMS产品;美国国家标准化组织ANSI于1986年宣布SQL成为数据库工业标准。众所周知,SQL语言包含四个部分:●数据定义语言(datadefinitionlanguage,DDL),包含CREATE、DROP、ALTER。●数据操纵语言(datamanipulationlanguage,DML),包含INSERT、UPDATE和DELETE。●数据查询语言(dataQuerylanguage,DQL),包含SELECT。●数据管理语言(datamanagementlanguage,DCL),包含SQL语句,如GRANT、REVOKE、COMMIT和ROLLBACK。任何SQL语句由RDBMS通过以下步骤处理:1.解析(语法检查):解析SQL语句的语法并确定其是否符合标准。2.分析:检查SQL语句中使用的对象(表、列等)是否存在于数据库中。如果有任何绑定变量,这一阶段将提取任何绑定变量。3.优化:基于成本选择用于查询执行的最佳计划。4.执行:执行上一步骤中生成的最佳计划并返回结果。在查询执行期间,索引是以额外写入和存储空间为代价来维护索引数据结构,从而提高数据库表上数据检索操作速度的重要数据结构之一。INDEX针对表的特定列创建,以保持元组组织良好,从而使对那些元组的访问变得更快。索引数据段仅存储作为索引的一部分的列的值,表的所有其它字段存储在堆数据段中。仅在索引的创建期间,就可以清楚地知道什么数据类型值将被存储在索引数据段中。由于索引列的数据类型在其创建期间是已知的,因此,对索引的各种操作的所有访问方法也保持不变。一些针对索引的最频繁操作可以包括但不限于,访问索引元组、发现空隙以插入特定的索引元组、搜索任何索引元组等。最近,为了提高数据库的性能,发现的方法是减少用于给定操作的CPU指令。在这一上下文中,现在技术中存在其中查询被编译成本地格式然后执行的可用示例。对这项技术的进一步完善是通过将访问方法编译为表来优化查询执行。在这种情况下,访问性能得以提高。MemSQL、DBMS微专业化、SQLServer2014是此类专业化的几个示例。这些解决方案提供了用于在“表创建”时间期间将表主题编译为本地代码的机制。为了对INDEX列进行像INSERT之类操作,根据现有技术中可用的技术,首先例如在B树中找到适当的位置,在该位置处可以存储新数据并且仍维持数据的排序顺序。与对任何索引进行SEARCH操作类似,进行节点的比较(例如,对BTree索引的二进制搜索)。对于索引,比较和基础设施功能构成大部分索引成本。所有这些比较和基础设施功能都以非常通用的方式来实现以处理所有的列数据类型和各种INDEX。
技术实现思路
提供本
技术实现思路
是为了引入与下文具体实施方式中进一步描述的用于索引编译以优化索引使用的系统、方法和设备有关的概念。本
技术实现思路
并不意在标识所要求保护的主题的本质特征,也不意在用于确定或限制所要求保护的主题的范围。技术问题:由于用于比较和其它基础设施的代码/逻辑是非常通用的,需要消耗更多的CPU指令来确定哪一部分代码将被执行,这导致用于执行查询的CPU指令总数增加因此性能降低。相应地,CPU的时间和成本也增加并且整个系统的效率降低。技术解决方案:本专利技术提供了一种用于高效且经济地解决上述技术问题的机制,所述机制通过在定义期间在本地编译和生成对应于每个INDEX的文件(例如,INDEXDLL),所述文件将包含基于索引列的数据类型对INDEX执行任何操作所需的所有结构和方法。为了通过减少查询的执行所需的CPU指令的数量来提高查询执行期间CPU的整体性能,本专利技术的实施例提供了本申请的多个方面。所述多个方面提供了一种用于索引编译以优化索引使用的方法、设备和系统。技术解决方案如下:在一个方面中,公开了一种用于编译使得可从数据库得到数据的INDEX的系统,所述系统对包括用于编译所述INDEX的至少一个命令的一个或多个查询进行响应。所述系统包括处理器,所述处理器用于:响应于所述命令,在本地编译所述查询,以生成对应于所述查询中的每个INDEX的C-文件,并由此基于生成的所述C-文件生成共享对象文件,所述共享对象文件包括用于基于所述数据库中的索引列对INDEX执行至少一种操作的至少一个结构和至少一种机制,其中所述共享对象文件是动态链接库文件。在另一方面中,公开了一种用于编译使得可从数据库得到数据的INDEX的设备,所述设备对包括用于编译所述INDEX的至少一个命令的一个或多个查询进行响应。所述设备包括用于接收用于查询所述数据库的所述查询的输入/输出硬件以及用于执行以下操作的处理器:响应于所述命令,在本地编译所述查询,以生成对应于所述查询中的每个INDEX的C-文件,并由此基于生成的所述C-文件生成共享对象文件,所述共享对象文件包括用于基于所述数据库中的索引列对INDEX执行至少一种操作的至少一个结构和至少一种机制,其中所述共享对象文件是动态链接库文件。在又一方面中,公开了一种用于编译使得可从数据库得到数据的INDEX的方法,所述方法对包括用于编译所述INDEX的至少一个命令的一个或多个查询进行响应。所述方法包括:接收用于查询所述数据库的所述查询;处理器识别所述查询,其中所述查询包括具有用于通过编译所述INDEX创建文件的命令的“CREATEINDEX”语句;响应于所述命令,在本地编译所述查询,以生成对应于所述查询中的每个INDEX的C-文件,并由此基于生成的所述C-文件生成共享对象文件,所述共享对象文件包括用于基于所述数据库中的索引列对INDEX执行至少一种操作的至少一个结构和至少一种机制,其中所述共享对象文件是动态链接库文件。在一种实施方式中,通过使用上述技术解决方案,本专利技术通过消除通用代码减少了指令的数量,从而提高了INDEX操作的性能。在一种实施方式中,通过使用上述技术解决方案,本专利技术通过考虑INDEX的微专业化性质改进了针对该INDEX的计划。附图说明该详细描述是参考附图描述的。在附图中,参考编号最左边的数字表示所述参考编号在该附图中首次出现。相同编号在所有附图中用以指代类似的特殊和组件。图1示出根据本专利技术主题的实施例的用于编译使得可从数据库得到数据的INDEX的系统10或设备20,系统10或设备20对包括用于编译INDEX的至少一个命令的一个或多个查询进行响应。图2示出根据本专利技术主题的实施例的用于编译使得可从数据库得到数据的INDEX的方法200,方法200对包括用于编译INDEX的至少一个命本文档来自技高网
...
用于索引编译以优化索引使用的系统、方法和设备

【技术保护点】
一种通过编译INDEX以从数据库得到数据的系统,所述系统用于对一个或多个查询进行响应,所述一个或多个查询中包括至少一个用于编译所述INDEX的命令,其特征在于,所述系统包括:处理器,用于:在本地编译所述查询,为响应所述查询,生成对应于所述查询中的每个INDEX的C‑文件,以及基于生成的所述C‑文件生成共享对象文件,所述共享对象文件包括至少一个结构和至少一种机制,所述至少一个结构和至少一个机制用于基于所述数据库中的索引列对INDEX执行至少一种操作,其中所述共享对象文件是动态链接库文件。

【技术特征摘要】
【国外来华专利技术】2015.03.21 IN 1439/CHE/20151.一种通过编译INDEX以从数据库得到数据的系统,所述系统用于对一个或多个查询进行响应,所述一个或多个查询中包括至少一个用于编译所述INDEX的命令,其特征在于,所述系统包括:处理器,用于:在本地编译所述查询,为响应所述查询,生成对应于所述查询中的每个INDEX的C-文件,以及基于生成的所述C-文件生成共享对象文件,所述共享对象文件包括至少一个结构和至少一种机制,所述至少一个结构和至少一个机制用于基于所述数据库中的索引列对INDEX执行至少一种操作,其中所述共享对象文件是动态链接库文件。2.根据权利要求1所述的系统,其特征在于,所述查询是CREATEINDEX语句,该CREATEINDEX语句携带有通过编译所述INDEX来创建所述共享对象文件的命令。3.根据任一前述权利要求所述的系统,其特征在于,所述系统用于:基于接收到的所述查询,创建对应于所述索引的结构;基于接收到的所述查询中的INDEX定义创建用于访问索引元组值的至少一个访问函数,以及用于为索引元组找到适当的空隙的至少一条指令,所述INDEX定义是通过CREATEINDEX语句的一部分给出的,其中通过每个INDEX生成的所述访问函数的数量总是相同的;将创建的所述结构、生成的所述访问函数,以及生成的所述指令存储在缓冲区中,以及基于存储的所述结构、所述访问函数和所述指令创建C-文件;使用至少一个预先存储的编译器编译创建的所述C-文件,以便从所述C-文件生成文件,其中所述文件是动态链接库文件;以及将所述文件连同至少一个可执行文件一起在所述系统中加载以用于执行所述查询。4.根据任一前述权利要求所述的系统,其特征在于,所述共享对象文件包括所述INDEX中列的列表中的至少一个列、用于索引元组值的一个或多个访问函数和用于为索引元组找到适当的空隙的一条或多条指令中的一个或多个。5.根据任一前述权利要求所述的系统,其特征在于,所述系统用于为所述INDEX创建系统表,并根据INDEX是否需要编译在所述系统表中存储选项,其中所述选项从以下中的至少一种选择:“真”,如果所述查询中存在用于创建文件的命令,或“假”,如果所述查询中不存在用于创建文件的命令。6.根据任一前述权利要求所述的系统,其特征在于,所述共享对象文件包括为所述INDEX生成的一个或多个函数指针,其中生成的所述函数指针存储在一个或多个关系描述符表中。7.根据任一前述权利要求所述的系统,其特征在于,关系描述符存储在为所有关系创建的缓存存储器中,所述关系描述符是使用所述对应关系(即表或索引)的所述系统表形成。8.根据任一前述权利要求所述的系统,其特征在于,所述共享对象文件如下生成:当接收到查询时,如果所述查询具有用于编译所述INDEX的命令,那么所述系统基于所述INDEX和接收到的所述查询生成C-文件,然后通过编译生成的所述C-文件生成共享对象文件。9.根据任一前述权利要求所述的系统,其特征在于,所述共享对象文件由应用、其它动态链接库,及其任意组合中的至少一种使用。10.根据任一前述权利要求所述的系统,其特征在于,所述共享对象文件在创建所述INDEX时基于以下条件命名:INDEX的名称,其中所述索引的名称随同所述CREATEINDEX查询一起获得;唯一编号,由所述系统生成,作为分配给每个索引的标识符;以及利用所述C-文件的名称创建所述共享对象文件,命名为所述名称和所述标识符的串联。11.根据任一前述权利要求所述的系统,其特征在于,当接收到新查询时,所述系统用于:检查随同所述查询一起接收到的INDEX是否是主题绑定的,其中提供标志以指示元组是否属于主题绑定索引;如果所述索引是主题绑定的,利用存储到与所述INDEX相关联的所述对应的关系描述符中的所述函数指针,以调用为所述新查询的执行生成的所述共享对象文件。12.根据任一前述权利要求所述的系统,其特征在于,所述查询以包括CREATEINDEX查询连同[COMPILE]选项的格式接收。13.一种用于编译使得可从数据库得到数据的INDEX的设备,所述设备对包括用于编译所述INDEX的至少一个命令的一个或多个查询进行响应,其特征在于,所述设备包括:用于接收用于查询所述数据库的所述查询的输入/输出硬件;处理器,用于指定所述查询,其中所述查询包括具有用于通过编译所述INDEX创建文件的命令的“CREATEINDEX”语句;与所述处理器耦合的存储器,其中针对用于编译的所述命令,所述存储器为所述处理器提供用于执行以下操作的指令:响应于所述命令,在本地编译所述查询,以生成对应于所述查询中的每个INDEX的C-文件,并由此基于生成的所述C-文件生成共享对象文件,所述共享对象文件包括用于基于所述数据库中的索引列对INDEX执行至少一种操作的至少一个结构和至少一种机制,其中所述共享对象文件是动态链接库文件。14.根据权利要求13所述的设备,其特征在于,所述设备用于:基于接收到的所述查询,创建对应于所述索引的结构;基于接收到的所述查询,创建用于索引元组值的至少一个访问函数,以及用于为索引元组找到适当的空隙的至少一条指令;将创建的所述结构、生成的所述访问函数,以及生成的所述访问函数存储在缓冲区中,并基于存储的结构、访问函数和指令创建C-文件;使用至少一个预先存储的编译器编译创建的所述C-文件;由此从所述C-文件生成共享对象文件,其中所述共享对象文件是动态链接库文件;以及将所述文件连同至少一个可执行文件一起在所述设备中加载以用于所述查询的执行。15.根据任一前述权利要求所述的设备,其特征在于,所述共享对象文件包括所述INDEX中列的列表中的至少一个列、用于索引元组值的一个或多个访问函数、用于为索引元组找到适当的空隙的一条或多条指令,及其任意组合。16.根据任一前述权利要求所述的设备,其特征在于,所述设备用于...

【专利技术属性】
技术研发人员:库马尔·拉吉夫·拉丝拓吉迪尼普·库马尔尼雅玛拉·斯瑞坎塔雅
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1