面向列式内存数据库的代码生成技术

来源 :电子科技大学 | 被引量 : 0次 | 上传用户:wysnl2009
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
在飞速发展的信息时代,对于各类信息的存储、查询需求越来越大,尤其是当现实社会的各类信息都被转化成电子信息存放和表示时。对于数据的存储、加工、查询的需求越来越高。数据库是数据处理的中坚力量,如何提高查询性能是数据库设计与实现的重要议题。数据库拥有复杂的类型体系和解释执行的计算方式,带来许多冗余计算,这导致其执行效率较低,无法充分利用硬件特性;而传统编译器又只能在执行前生成代码,无法消除数据库带来的不确定性。如果在执行时使用数据库的动态信息和用户查询请求中的信息,去掉不需要的冗余指令,优化代码逻辑,将进一步提高执行效率。本文讨论了在分布式列式内存数据库中,使用即时编译器作为工具,根据数据库中的算子逻辑和动态执行信息,生成更优执行代码的技术。本文没有采用将整个查询分析树转化成执行函数的做法,因为在分布式环境下,列式存储的引擎将打破这样转化带来的优势,而只在单个算子内部进行代码生成。本文采用Impala数据引擎封装的即时编译库作为底层支撑组件,在分布式内存数据库Goldfish中,实现了排序、分组两个算子和表达式计算部分的编译执行,并提出了基于元组数目进行自适应代码生成的方法。文章详细介绍了数据库中的排序、分组、聚合等算子如何在运行时,动态修改执行逻辑,以期获得更好的执行效率,并对使用代码生成技术的算子进行单元测试。根据测试结果,在一定范围内,代码生成技术在元组数目越大时效果越明显。排序和分组算子都在元组数目较大时获得了几倍的性能提升,聚合算子中的表达式计算模块也获得了一定的性能提升。使用相关工具测试之后发现,使用代码生成技术的新算子,其指令数低于未进行代码生成的算子,其内存占用峰值也较低,因此无论是从时间效率还是空间效率来看,代码生成技术都能够提高查询性能。当元组数目较小时,由于代码生成本身会有开销,反而会降低程序性能。因此实际运行过程中,需要根据输入元组的数目确定是否使用代码生成技术。
其他文献
云南S建筑公司是云南省拥有几十年历史的建筑企业,经营范围包括房屋建筑工程、水利水电、电力工程等多个项目。但是随着我国建筑市场全面对外开放,市场竞争愈发激烈,公司不但
为国家培养有用人才,是学校的主要任务。而有用人才必须具备最基本的科学能力。即必须有起码的科学研究能力或科学认识能力。如观察力、注意力、记忆力、理解力、思考力以及语
亲属作证特免权制度是探讨现代证据法规则绕不开的一环,也是捍卫近亲属和被追诉人正当权利的必然要求。说到它的起源,有必要先探讨它与证人资格的关系。英美法系早期是以“配
目的:分析正常范围内肝功能水平与代谢综合征及相关代谢指标的相关性。方法:1)2011年至2012年在延吉市健康体检中心参与健康体检的成年人共5667名,进行资料整理排除检测指标
开展多媒体教学是提高教育质量的重要环节.结合教学实践从软件的特点、课堂教学、学生自学和制作与维护等几个方面讨论了用FrontPage制作多媒体课件的优缺点,并与PowerPoint
随着经济的快速发展和建设步伐的加快。人们的生活质量不断改善,对作为可持续发展战略的重要组成部分和小康社会的重要指标之一的生态环境的耍求越来越高。同时,伴随生态城市、
整体式螺栓拉伸机是针对核反应堆机组端盖的开关所设计的一种重要设备。对于整体机构而言,其举升机构发挥着至关重要的作用。搭载传统举升机构的拉伸机在实际工作中,证明了存