vertica中SQL的执行过程

本文翻译整理自:SQL执行过程

SQL执行过程

一个SQL的执行过程中,依赖以下内容:

  • 启动节点:客户端在提交查询时连接到的节点
  • 优化器:评估运行查询的不同策略并选择最佳策略
  • 执行计划:查询将执行的步骤或计划
  • 执行节点:参与执行特定SQL语句的任何节点,通常包含启动节点。
过程如下
查询提交

vertica任何一个节点都可以成为启动节点。

  • 在此节点可以做的优化是打开负载均衡,vertica支持原生负载均衡。若客户端连接,需要同时在客户端和本地集群打开负载均衡。
    设置函数为:set_load_balance_policy
规划执行计划

优化器考虑:

  • 不同的查询重写
  • 投影组合
  • 谓词的应用顺序
  • 执行join和group by的顺序

优化器会执行统计分析,选择成本最低的计划作为执行计划。

可以在查询前面使用EXPLAIN关键字来查看优化程序的计划,而无需执行查询。也可以联合查询QUERY_PROFILESPROJECTION_USAGE系统表以获取更多信息。

可以通过联合查询QUERY_PROFILESRESOURCE_ACQUISITIONS系统表,获取查询中使用的一些资源信息,包括打开文件数,线程数,内存使用等信息,以更好的优化查询。
以上内容可参考:Looking Under the Hood at Vertica Queries

vertica支持用户影响优化器以在执行给定查询时做出更好的选择。常见的使用方法是在SQL中使用提示hits,以及使用direct query

下发执行计划

优化器确定了执行计划后,会将查询计划分解为较小的计划,然后启动节点将这些计划分发给所有参与执行的节点。

获取执行结果

每个执行节点执行获得到的查询计划的一部分,执行完成后,将结果返回给启动节点,启动节点汇总后返回给用户。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值