设计保持在 Snowflake 施加的约束范围内的处理程序

为了确保 Snowflake 环境中的稳定性,Snowflake 对处理程序代码施加了以下约束。除非另有说明,否则这些限制将在执行处理程序时强制执行,而不是在创建时强制执行。

本主题内容:

避免使用过多内存

请避免以下操作,因为这些操作会使用大量内存:

  • 大数据值。可以包括二进制值,以及大型数组、对象或变体。

    Snowflake 在 SQL 数据类型和处理程序语言中的相应类型之间进行转换。有关更多信息,请参阅 SQL 与处理程序语言之间的数据类型映射

  • 堆栈深度过大。Snowflake 已经测试了嵌套 50 级深度的简单函数调用,没有错误。实际的最大限制取决于堆栈中放置的信息量。

如果处理程序代码占用过多内存,则将返回错误。具体限制可能会发生变化。

避免每次调用占用大量时间的算法

如果处理程序完成时间过长,Snowflake 会终止 SQL 语句并向用户返回错误。这限制了无限循环等错误的影响和成本。

不要使用可能引入安全漏洞的库

尽管处理程序可以使用外部库中的功能,但 Snowflake 安全限制会禁用某些功能,例如写入文件。有关库限制的详细信息,请参阅 UDFs 和过程的安全实践

语言: 中文