雪花存储过程与独立存储过程 sql
snowflake sproc vs standalone sql
我正在考虑为我们的 BI 目的创建非规范化 table。
从多个 table 创建业务逻辑时,我注意到当非规范化 table 批量更新(具有多个业务逻辑 SQL 的存储过程)和合并语句时查询性能更好下面。
例如:sproc 包含多个SQL's like
- 合并 denormalized_data (select businesslogic1)
- 合并 denormalized_data (select businesslogic2)
等等
是将业务逻辑包含在巨大的 SQL 中还是将其拆分以便每个查询处理更少的行数更好?
如果我使用 sproc 会有任何开销吗?
说的很笼统。 Snowflake 针对大批量工作进行了优化。例如,我遇到过插入 1 条记录所需时间与 100,000 条记录一样长的情况。所以插入 1 条记录 100,000 次会慢很多。
肯定会有一些限制。应该拆分 1TB 的批次。您的里程数可能会因 how/when/etc 而异。您正在更新 table。不过一般来说,您会发现批处理的性能更高。
据我所知,过程的唯一实际开销与将数据类型从 SQL 转换为 Javascript 并再次转换回来有关,然后是您必须如何管理输出。在大多数情况下,这不会很重要。
我正在考虑为我们的 BI 目的创建非规范化 table。
从多个 table 创建业务逻辑时,我注意到当非规范化 table 批量更新(具有多个业务逻辑 SQL 的存储过程)和合并语句时查询性能更好下面。
例如:sproc 包含多个SQL's like
- 合并 denormalized_data (select businesslogic1)
- 合并 denormalized_data (select businesslogic2)
等等
是将业务逻辑包含在巨大的 SQL 中还是将其拆分以便每个查询处理更少的行数更好?
如果我使用 sproc 会有任何开销吗?
说的很笼统。 Snowflake 针对大批量工作进行了优化。例如,我遇到过插入 1 条记录所需时间与 100,000 条记录一样长的情况。所以插入 1 条记录 100,000 次会慢很多。
肯定会有一些限制。应该拆分 1TB 的批次。您的里程数可能会因 how/when/etc 而异。您正在更新 table。不过一般来说,您会发现批处理的性能更高。
据我所知,过程的唯一实际开销与将数据类型从 SQL 转换为 Javascript 并再次转换回来有关,然后是您必须如何管理输出。在大多数情况下,这不会很重要。