[发明专利]一种用于Presto的SQL查询方法及系统有效
申请号: | 201510783729.5 | 申请日: | 2015-11-16 |
公开(公告)号: | CN105426467B | 公开(公告)日: | 2018-11-20 |
发明(设计)人: | 袁安峰;郭李明 | 申请(专利权)人: | 北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 中科专利商标代理有限责任公司 11021 | 代理人: | 宋焰琴 |
地址: | 100080 北京市海淀区杏石口路6*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 用于 presto sql 查询 方法 系统 | ||
本发明提供了一种用于Presto的SQL查询方法及系统,方法首先配置数据库中需缓存的查询结果所在的表,然后根据SQL查询命令生成执行计划,并为该执行计划生成唯一标识,最后根据执行计划的唯一标识,查询缓存在分布式文件系统中的缓存表,并从该缓存表中得到查询结果。本发明在一段时间内执行同样的SQL查询时,将不再执行Presto计算而是直接返回之前缓存的查询结果,加快查询速度,并缓解Presto压力,同时,也减少了对内存和CPU的消耗。
技术领域
本发明属于交互式SQL查询领域,尤其涉及一种用于Presto的SQL查询方法及系统。
背景技术
Presto是一种纯内存的交互式SQL查询引擎,查询效率比Hive(基于Hadoop的一个数据仓库工具,提供简单的SQL查询功能)高出近10倍,能够跨越包括Hive、MySQL、Kafka在内的多种数据源进行查询,目前已成功应用在Facebook、Netflix、Dropbox、京东等知名互联网公司。
对于提交给Presto执行的SQL,Presto首先会对SQL进行解析并生成执行计划,然后再依据执行计划分配计算任务并执行,如图1所示。
在Presto使用过程中有时会遇到如下的问题:
1、SQL会频繁地执行;
2、执行时间较长但查询结果较小;
3、查询结果的实时性不高。
针对以上问题,目前Presto的解决方案为,针对每一个提交的SQL,分别生成执行计划,然后分配计算任务并执行。然而,由于每一个SQL执行的时间较长,对Presto计算的压力较大,对内存和CPU的消耗也较大,甚至可能导致内存溢出进而导致SQL执行失败。
缓存查询结果,加快查询速度并缓解Presto压力的方法。该方法针对实时性要求不高的SQL,能够缓存其查询结果,在一段时间内执行同样的SQL时,将不再执行Presto计算而是直接返回之前缓存的查询结果。该方法无需进行复杂的计算,能够有效减轻Presto的压力,对内存和CPU的消耗也不大。
发明内容
(一)要解决的技术问题
本发明的目的在于,提供一种用于Presto的SQL查询方法及系统,能够为SQL查询缓存其查询结果,并在一定时间内再次执行同样的SQL查询时直接返回缓存的查询结果,提高SQL查询的效率,减少Presto的计算量,减少内存和CPU的消耗。
(二)技术方案
本发明提供一种用于Presto的SQL查询方法,包括:
S1,配置数据库中需缓存的查询结果所在的表;
S2,接收SQL查询命令,并根据该SQL查询命令生成执行计划,判断该执行计划需查询的表是否为数据库中所配置的表,若是,则为该执行计划生成唯一标识;
S3,根据执行计划的唯一标识,查询缓存在分布式文件系统中的缓存表,并从该缓存表中得到查询结果。
本发明还提供一种用于Presto的SQL查询系统,包括:
配置模块,用于配置数据库中需缓存的查询结果所在的表;
标识生成模块,用于接收SQL查询命令,并根据该SQL查询命令生成执行计划,判断该执行计划需查询的表是否为数据库中所配置的表,若是,则为该执行计划生成唯一标识;
查询模块,用于根据执行计划的唯一标识,查询缓存在分布式文件系统中的缓存表,并从该缓存表中得到查询结果。
(三)有益效果
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司,未经北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510783729.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:背诵辅助方法及装置
- 下一篇:一种地图数据的处理方法、装置及系统