【发布时间】:2020-06-12 11:24:05
【问题描述】:
作为 Snowflake 的新手,我试图了解如何编写基于 JavaScript 的存储过程 (SP) 以利用多线程/并行处理。 我的背景是 SQL Server 和编写 SP,利用并行度、工作线程、索引、列存储段消除等性能特性。
我开始习惯于设置存储和使用集群键、微分区和任何其他可用的性能功能,但我不明白 Snowflake SP 如何将给定的 SQL 语句分解为并行流。我正在努力寻找任何文件来解释内部运作。 我担心的是产生在一个线程上序列化所有内容并成为瓶颈的 SP。 我想知道我是否在应用正确的技术/需要不同的心态来开发 SP。 我希望我已经充分解释了我的担忧。本质上,我正在构建一个 PoC 以将本地 SQL Server DWH ETL 解决方案迁移到 Snowflake/Matillion ELT 解决方案,一方面是评估我需要的计算虚拟仓库大小。
【问题讨论】:
-
您是希望 SP 并行执行多个 SQL 语句,还是只是想确保 SQL 语句本身是多线程的?如果是后者,那么 Snowflake 会为您处理,您无需担心。
-
嗨,迈克,感谢您的回复。
-
嗨,迈克,感谢您的回复。肯定对后者感兴趣。我想了解更多关于 Snowflake 是如何实现这一点的,而不仅仅是接受它。例如,必须有关于如何编写 SP、复杂程度 v 过度使用存储(临时存储)的最佳实践,其中,从 ETL 到 ELT 的角度来看,维护整个过程的控制(开发构架)。我有很多关于迁移、测试框架、CI/CD 管道的问题,现在很难从哪里开始。
-
您可能需要联系 Snowflake 的销售代表。 Snowflake 的销售工程师可以为您的 POC 提供帮助,也有专业的服务可以进来教授最佳实践,甚至协助设计您的最终解决方案。
-
听起来是个好建议,迈克。得看看荷包能不能松开。
标签: query-performance snowflake-cloud-data-platform java-stored-procedures