首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Presto介绍及常用查询优化方法总结

​1、Presto简介 Presto是Facebook开源MPP(Massive Parallel Processing)SQL引擎,其理念来源于一个叫Volcano并行数据库,该数据库提出了一个并行执行...SQL模型,它被设计为用来专门进行高速、实时数据分析。...Presto是一个SQL计算引擎,分离计算层和存储层,其不存储数据,通过Connector SPI实现对各种数据源(Storage)访问。...2.2 查询优化 ① select时只选择必要字段,避免使用 * 号 ② 过滤条件加上分区字段,减少查询数据量 ③ 合理安排Group by语句中字段顺序对性能有一定提升 将Group By语句中字段按照每个字段...row_number函数来获取Top N 在进行一些分组排序场景时,使用rank函数性能更好 2.3 Join优化 ① 使用Join语句时将大表放在左边 Prestojoin默认算法是broadcast

2.4K00

Presto介绍与常用查询优化方法

比如对于经常需要过滤字段可以预先排序。 SQL优化 只选择使用必要字段: 由于采用列式存储,选择需要字段可加快字段读取、减少数据量。...将Group By语句中字段按照每个字段distinct数据多少进行降序排列, 减少GROUP BY语句后面的排序一句字段数量能减少内存使用....比如使用approx_distinct() 函数比Count(distinct x)有大概2.3%误差 用regexp_like代替多个like语句: Presto查询优化器没有对多个like语句进行优化...,使用regexp_like对性能有较大提升 使用Join语句时将大表放在左边: Prestojoin默认算法是broadcast join,即将join左边表分割到多个worker,然后将join...Impala性能稍领先于presto,但是presto在数据源支持上非常丰富,prestoSQL支持上也更多一些。

3.4K50

构建一个优秀SQL及优化方案

使用近似聚合函数---大部分查询引擎或者分布式数据库(Presto, ClickHouse, Druid等)有一些近似聚合函数,对于允许有少量误差查询场景,使用这些函数对查询性能有大幅提升。...避免使用多LIKE语句---如果是使用Presto的话,一定要使用regexp_like,这是因为Presto查询优化器没有对多个like语句进行优化,使用regexp_like对性能有较大提升正确...避免大表再右侧---JOIN默认算法是broadcast join(Presto),即将join左边表分割到多个worker,然后将join右边表数据整个复制一份发送到每个worker进行计算。...FROM tableL JOIN l tableS s ON l.id = s.id核心点就是使用分布式JOINPresto这种配置类型会将左表和右表同时以join keyhash value为分区字段进行分区...正确SQL:select id from t where num=100*2错误SQL:select id from t where num/2=100避免在where子句中对字段进行函数操作---

78650

快速学习-Presto优化

第3章 Presto优化 3.1 数据存储 1)合理设置分区 与Hive类似,Presto会根据元信息读取分区数据,合理分区能减少Presto数据读取量,提升查询性能。...SELECT count(*) FROM nation_orc WHERE n_name=’AUSTRALIA’; 3.2 查询SQL优化 1)只选择使用必要字段 由于采用列式存储,选择需要字段可加快字段读取...Presto有一些近似聚合函数,对于允许有少量误差查询场景,使用这些函数对查询性能有大幅提升。...语句时将大表放在左边 Prestojoin默认算法是broadcast join,即将join左边表分割到多个worker,然后将join右边表数据整个复制一份发送到每个worker进行计算。...FROM small_table s join large_table l on l.id = s.id 8)使用Rank函数代替row_number函数来获取Top N 在进行一些分组排序场景时,使用

1.9K20

即席查询引擎对比:我为什么选择Presto

需求背景 即席查询AD-HOC :以单独SQL语句形式执行查询就是即席查询,比如说:HUE里面输入SQL语句并获得结果或者使用dbeaver连接hiveserver2自己键入SQL代码并获取结果...Presto最大优势是支持跨数据源join,例如我们可以用Mysql表和Hive表做Join,将得到正确计算结果保存到Oracle中。...Presto注意事项 时间类型 Presto日期格式化函数与Hive有点不同,比如在Hive中,我们要格式化一个日期 date_format('2016-08-16','yyyyMMdd') Presto...常用hive函数对应 collect_list -> array_agg concat_ws -> array_join collect_set -> array_agg 后 array_distinct...:split拆分成数组,cross join unnest将数组分开,要注意一下两种语法表名缩写位置不同 cross join unnest(split(id_list, ',')) as b(oid

3.3K10

从 0 到 1 学习 Presto,这一篇就够了

6.2.4 Order by时使用Limit 6.2.5 使用近似聚合函数 6.2.6 用regexp_like代替多个like语句 6.2.7 使用Join语句时将大表放在左边 6.2.8 使用Rank...WITH 语句 6.4.4 利用子查询,减少读表次数,尤其是大数据量表 6.4.5 只查询需要字段 6.4.6 Join查询优化 6.4.7 字段名引用 6.4.8 时间函数 6.4.9 MD5...Presto有一些近似聚合函数,对于允许有少量误差查询场景,使用这些函数对查询性能有大幅提升。...语句时将大表放在左边 Prestojoin 默认算法是broadcast join,即将 join 左边表分割到多个 worker ,然后将join 右边表数据整个复制一份发送到每个...FROM small_table s join large_table l on l.id = s.id 6.2.8 使用Rank函数代替row_number函数来获取Top N 在进行一些分组排序场景时

5.9K32

大数据实时查询-Presto集群部署搭建

Presto介绍 Presto是一个分布式SQL查询引擎, 它被设计为用来专门进行高速、实时数据分析。...它支持标准ANSI SQL,包括复杂查询、聚合(aggregation)、连接(join)和窗口函数(window functions)。...然而Presto引擎没有使用MapReduce。它使用了一个定制查询和执行引擎和响应操作符来支持SQL语法。除了改进调度算法之外, 所有的数据处理都是在内存中进行。...Coordinator负责解析SQL语句,生成执行计划,分发执行任务给Worker节点执行。Worker节点负责实际执行查询任务。...这个配置参数限制GROUP BY语句中Group数目、JOIN关联中右关联表大小、ORDER BY语句中行数和一个窗口函数中处理行数。

3.4K42

由浅入深了解Presto技术内幕

ANSI SQL – 扩展性:支持自定义开发Connector和UDF – 混合计算:可以根据需要将开源于不同数据源多个Catalog进行混合join计算 – 高性能:10倍于Hive查询性能 –...语句;Presto支持符合ANSI标准SQL语句,由字句,表达式和断言组成 – Query 即查询执行,当Presto接受SQL并执行时,会解析SQL并转变成一个查询执行和相关查询计划。...Presto中有4种Stage: Coordinator_Only:用于执行DDL或者DML语句中最终表结构创建和更改 Single:没有下游Stage,结果直接输出给Coordinator,用于聚合其他...中可选参数 Expression:SQL中出现表达式 FrameBound:用于窗口函数滑动窗口参数 Relation:抽象类,包含多个节点或者多个节点关系,如Union,Join Select...TableElement:表示建表语句中描述表每一列 Window:表示一个窗口函数 WindowFrame:表示窗口函数滑动窗口函数 With:表示查询中所有的With语句 WithQuery

3.2K21

10个简单步骤,完全理解SQL

---- 6、 SQL句中不同连接操作 SQL句中,表连接方式从根本上分为五种: EQUI JOIN SEMI JOIN ANTI JOIN CROSS JOIN DIVISION EQUI...CROSS JOIN 这个连接过程就是两个连接乘积:即将第一张表每一条数据分别对应第二张表每条数据。我们之前见过,这就是逗号在 FROM 语句中用法。...在实际应用中,很少有地方能用到 CROSS JOIN,但是一旦用上了,你就可以用这样 SQL语句表达: -- Combine every author with every bookauthor CROSS...当你句中没有 GROUP BY 时候,可以使用开窗函数代替聚合函数; 当你句中没有 GROUP BY 时候,你不能同时使用聚合函数和其它函数; 有一些方法可以将普通函数封装在聚合函数中; …...(译者注:这段话原文就比较艰涩,可以简单理解如下:在既有聚合函数又有普通函数 SQL句中,如果没有 GROUP BY 进行分组,SQL 语句默认视整张表为一个分组,当聚合函数对某一字段进行聚合统计时候

74340

十步完全理解 SQL

SQL句中不同连接操作 SQL句中,表连接方式从根本上分为五种: EQUI JOIN SEMI JOIN ANTI JOIN CROSS JOIN DIVISION EQUI JOIN 这是一种最普通...CROSS JOIN 这个连接过程就是两个连接乘积:即将第一张表每一条数据分别对应第二张表每条数据。我们之前见过,这就是逗号在 FROM 语句中用法。...CROSS JOIN book DIVISION DIVISION 的确是一个怪胎。...当你句中没有 GROUP BY 时候,可以使用开窗函数代替聚合函数; 当你句中没有 GROUP BY 时候,你不能同时使用聚合函数和其它函数; 有一些方法可以将普通函数封装在聚合函数中; …...(译者注:这段话原文就比较艰涩,可以简单理解如下:在既有聚合函数又有普通函数 SQL句中,如果没有 GROUP BY 进行分组,SQL 语句默认视整张表为一个分组,当聚合函数对某一字段进行聚合统计时候

958100

OLAP组件选型

Presto支持标准ANSI SQL,包括复杂查询、聚合(aggregation)、连接(join)和窗口函数(window functions)。...Presto和Spark SQL有很大相似性,这是它区别于Hive最根本区别。...等等)以支持高级分析功能 支持使用磁盘进行连接和聚合,当操作使用内存溢出时转为磁盘操作 允许在where子句中使用子查询 允许增量统计——只在新数据或改变数据上执行统计计算...我个人对Druid理解在于,Druid保证数据实时写入,但查询上对SQL支持不够完善(不支持Join),适合将清洗好记录实时录入,然后迅速查询包含历史结果,在我们目前业务上没有实际应用。...,业务用户- 能对当前业务数据进行BI实时分析(Just In Time BI) 支持主流sql语法,使用起来十分方便,学习成本低 扩展性好,支持多语言自定义函数和自定义类型等 提供了大量维护工具

2.6K30

企业面试题|最常问MySQL面试题集合(二)

MySQL关联查询语句 六种关联查询 交叉连接(CROSS JOIN) 内连接(INNER JOIN) 外连接(LEFT JOIN/RIGHT JOIN) 联合查询(UNION与UNION ALL)...全连接(FULL JOIN) 交叉连接(CROSS JOIN) SELECT * FROM A,B(,C)或者 SELECT * FROM A CROSS JOIN B (CROSS JOIN C) #...如果在 where 子句中使用参数,也会导致全表扫描。因为SQL只有在运行时才会解析局部变量,但优化程序不能将访问计划选择推迟到运行时;它必须在编译时进行选择。...如: select id from t where num/2=100应改为:select id from t where num=100*2 9.应尽量避免在where子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描...‘abc%’ 10.不要在 where 子句中“=”左边进行函数、算术运算或其他表达式运算,否则系统将可能无法正确使用索引。

1.7K20

Presto原理&调优&面试&实战全面升级版

丰富插件接口,完美对接外部存储系统,或者添加自定义函数。 三、整体架构 ?...将Group By语句中字段按照每个字段distinct数据多少进行降序排列, 减少GROUP BY语句后面的排序一句字段数量能减少内存使用....,使用这些函数对查询性能有大幅提升。...,使用regexp_like对性能有较大提升 使用Join语句时将大表放在左边:Prestojoin默认算法是broadcast join,即将join左边表分割到多个worker,然后将join...使用Rank函数代替row_number函数来获取Top N UNION ALL 代替 UNION :不用去重 使用WITH语句:查询语句非常复杂或者有多层嵌套子查询,请试着用WITH语句将子查询分离出来

2K41

干货 | 携程Presto技术演进之路

性能浪费 所有的join查询默认都是使用Broadcast join,用户必须指定join模式才能做到Broadcast join 和 Map join切换。...性能方面 根据Hive statistic信息,在执行查询之前分析hive扫描数据,决定join查询是否采用Broadcast join还是map join。...在Kerberos模式下,所有SQL都是用Presto启动账号访问Hive Metastore,比如使用Hive账号启动Presto,不论是flt账户还是htl账户提交SQL,最终到Hive Metastore...统一查询引擎,统一查询引擎可以在presto,kylin,hive spark-sql之间匹配最优查询引擎,做语法转换后路由过去。...六、结束 随着Presto社区蓬勃发展,最新版本为0.203,其中包含了大量优化和Bug Fix,希望跟大家一起讨论。

3.3K20
领券