雪花查询配置文件接口

Posted

技术标签:

【中文标题】雪花查询配置文件接口【英文标题】:Snowflake Query Profile Interface 【发布时间】:2020-09-12 20:14:01 【问题描述】:

已使用 Snowflake 查询配置文件接口,但缺少有关查询执行中的并行性的信息。使用大型或 XLarge Warehouse,它仍然只使用两台服务器来执行查询。拥有一个 XLarge Warehouse 一个大的分类可以分为 16 个并行执行线程,以充分利用我的 Warehouse 和信用。还是?

示例:拥有一个中型仓库:

Medium Warehouse => 4 servers

执行以下查询:

选择 sum(o_totalprice) "订单总额", count(*) "订单数", c.c_name "客户" 从 订单 o 在 c.c_custkey = o.o_custkey 上加入客户 c 在哪里 c.c_nationkey in (2,7,22) 通过...分组 c.c_name

给出以下查询计划:

Query Plan

在执行详细信息中,我看不到有关参与服务器的任何信息:

enter image description here

最好的问候 扬·伊萨克森

【问题讨论】:

Jan,感谢您分享更多详细信息。您是否正在寻找有关底层集群的信息?如果是这种情况,您将无法获得该详细信息。如果您有一个多集群仓库,您可以查看使用了哪些集群的最大值。 Snowflake 是一种 SaaS,因此不会暴露虚拟仓库的内部工作。要查看正在使用哪个集群,请查看 QUERY_HISTORY 视图中的 CLUSTER_NUMBER。 好的!根据 SQL 查询的性质查看集群内的并行度会很有趣。无论如何,感谢 Rajib 的支持 //Jan 【参考方案1】:

在理想情况下,雪花会尝试拆分您的查询,让仓库的每个核心处理一个查询。例如,如果您有一个 2XL 的仓库,那么您有 32x8 = 256 个核心(一个仓库中的每个节点有 8 个核心)。因此,如果提交查询,理想情况下雪花会尝试将其分成 256 个部分,并让每个核心处理一个部分。

实际上,可能无法并行化到那种程度,这是因为查询本身不能像那样分解(例如,如果您要计算假设中位数),或者如果数据本身正在阻止它并行化(例如,如果您尝试在倾斜的列上运行窗口函数)它到那个程度。

因此,如果您迁移到更大的仓库,您的查询性能不一定会线性提高。

【讨论】:

感谢 Rajib 回答我的问题。我知道这将是节点数量的意图,您所说的也是我集群中的核心。但我什至很难让两个节点处理我的查询,至少是分析器在控制台上显示的内容。 是否可以共享您的查询和查询配置文件视图的快照。还请转到仓库选项卡并发送快照。我想看看你用的是多集群仓库还是普通仓库【参考方案2】:

我从最小的计算大小开始测试您的查询。线性扩展(更多的计算资源导致性能提高)在中等大小附近停止,此时性能改进没有额外的好处。这表明您的查询不够大,无法利用更多的计算资源,而大小 s 足够好,尤其是考虑到成本优化。

【讨论】:

是的,但如果能在查询树中看到集群中使用的服务器数量的指示,那就太好了。干杯//一月

以上是关于雪花查询配置文件接口的主要内容,如果未能解决你的问题,请参考以下文章

谈谈雪花算法的使用

Mybatis---配置文件完成增删改查(查询详情)

C 语言文件操作 ( 配置文件读写 | 业务逻辑 | 接口设计 )

MyBatis配置文件--mappers映射器

当查询从文件中合并时,row_produced 计数在雪花 query_history 视图中代表啥

MyBaitsPlus快速入门