[发明专利]查询即时JIT编译和执行的装置和方法有效
| 申请号: | 201680010877.6 | 申请日: | 2016-03-31 |
| 公开(公告)号: | CN107250983B | 公开(公告)日: | 2020-12-15 |
| 发明(设计)人: | 丁永华;张国根;朱澄 | 申请(专利权)人: | 华为技术有限公司 |
| 主分类号: | G06F16/24 | 分类号: | G06F16/24;G06F16/242;G06F9/448 |
| 代理公司: | 深圳市深佳知识产权代理事务所(普通合伙) 44285 | 代理人: | 王仲凯 |
| 地址: | 518129 广东*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 查询 即时 jit 编译 执行 装置 方法 | ||
本文所提供的实施例用于将参数化中间表示IR用于数据库查询执行引擎中的即时JIT编译。在一实施例中,一种支持在数据库管理系统中查询JIT编译和执行的方法包括:识别查询中的中央处理器密集函数,并在所述CPU密集函数中识别一个或者多个参数,其中,所述一个或者多个参数代表在不同查询实例中可以变化的值的变量;将所述CPU密集函数编译成包括所述一个或者多个参数的参数化IR;将所述CPU密集函数的参数化IR保存在参数化IR的目录中。
相关申请案交叉申请
本申请要求于2015年4月15日递交的发明名称为“在数据库查询执行引擎中利用参数化中间表示进行即时编译的装置和方法”申请号为14/687,473的美国非临时专利申请案的权益和在先申请优先权,该在先申请的内容以引入的方式并入本文。
技术领域
本发明涉及数据库处理,在特定实施例中,涉及在数据库查询执行引擎中利用参数化中间表示进行即时编译的装置和方法。
背景技术
在现代数据系统中,例如通过采用固态磁盘(solid state drive,简称SSD)设备很大程度上避免了慢磁盘访问时,查询执行的中央处理器(central processing unit,简称CPU)的成本变得越来越关键。即时(Just-in-time,简称JIT)编译是用于提高数据库系统中CPU性能的方法。JIT编译指的是在程序执行的运行时间而不是执行之前进行的查询执行中的编译方案。因为在代码优化、本地代码生成以及编译后的代码的质量方面的有效性,低级虚拟机(low level virtual machine,简称LLVM)编译器的结构对于JIT编译是很好的候选。所述LLVM包括用于在运行时间生成特定查询函数的中间表示(intermediaterepresentation,简称IR)的组合函数(称作IRBuilder)。相比编译后的特定查询函数,所述LLVM可以更加高效地从所述IR生成优化的机器代码。但是LLVM IR在运行时间通过LLVMIRBuilder生成代码在时间和/或计算资源例如内存等方面代价较高且容易出错。或者可以利用LLVM提供的clang/clang++等工具将C/C++代码编译成LLVM IR。如果所述C/C++代码不是专门用于传入查询,该方法可能不会受益于JIT编译。因此需要一种更加高效地为查询的JIT编译生成IR的方案。
发明内容
根据一实施例,一种支持在数据库管理系统中查询即时(just-in-time,简称JIT)编译和执行的方法包括:识别查询中的中央处理器(central processing unit,简称CPU)密集函数,并且在所述CPU密集函数中识别一个或者多个参数。所述一个或者多个参数代表在不同查询实例中可以变化的值的变量。将所述CPU密集函数编译成包括所述一个或者多个参数的参数化中间表示(intermediate representation,简称IR)。将所述CPU密集函数的参数化IR保存在参数化IR的目录中。
根据另一实施例,一种支持在数据库管理系统中查询JIT编译和执行的方法包括:将CPU密集函数编译成包括一个或者多个参数的参数化IR。所述一个或者多个参数代表在不同的查询实例中可以变化的的值的变量。所述方法还包括:将所述CPU密集函数的参数化IR保存在参数化IR的目录中;并且在准备执行传入查询时,从目录加载参数化IR。在所述参数化IR中利用所述传入查询的变量的常数值替代所述一个或者多个参数;通过所述JIT编译利用替代所述一个或者多个参数的常数值编译所述参数化IR,以生成执行所述传入查询的机器代码。
根据又一实施例,一种用于数据库查询执行引擎的装置包括:至少一个处理器以及用于存储供所述至少一个处理器执行的程序的非瞬时性计算机可读取存储介质。所述程序包括指令,用于识别查询中CPU密集函数,并且在所述CPU密集函数中识别代表在不同查询实例中可以变化的值的变量的一个或者多个参数。所述程序还包括指令,用于将所述CPU密集函数编译成包括所述一个或者多个参数的参数化IR,并且将所述CPU密集函数的参数化IR保存在参数化IR的目录中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201680010877.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:农学实验灌溉装置
- 下一篇:一种给水连供型市政景观花盆架





