我正在使用一系列流和任务来提取、加载原始数据,并将其从我们的ERP系统转换为Snowflake。我注意到根任务完成和下一个相关任务开始之间有2分钟以上的延迟。每个任务都会调用一个SQL存储过程,并在不到5秒内完成,所以我认为一切都会在一分钟内完成。还有一些其他查询同时运行,但它们也都在不到5秒内完成,没有什么可以解释这么长的延迟。仓库使用情况并不表示过载。顺序如下:
-
任务1每5分钟运行一次,使用
COPY INTO
将文件从内部表阶段移动到原始阶段数据表。 -
流1记录仅在原始数据表上插入。
-
任务2依赖于任务1使用
MERGE INTO
将记录从流1转换并移动到当前数据表。 -
Stream 2记录在当前数据表上的插入/更新/删除。
-
任务3依赖于任务2使用
MERGE INTO
将记录从流2移动到历史数据表。
这是Snowflake:的活动日志副本
任务开始时间这个问题最近开始了吗?你能打开一个支持案例来调试它吗?因为这可能需要工程参与来调试。
谢谢。
Snowflake工程对此进行了调查,并表示这是由于在共享集群上而预期的行为。目前的替代方案是切换到专用的虚拟仓库。以下是Snowflake的完整回应:
工程部调查了该问题,在调查了该事件后,他们更新称,根据我们的内部架构,由于共享集群,预计会出现约1分钟的延迟。工程团队已经在做一些正在进行的工作,以提高吞吐量并减少客户的延迟,但这些工作不会很快实现。因此,目前,如果您需要缓解此问题,可以切换到专用集群。