gpt4 book ai didi

sql - 雪花查询已终止 : "SQL execution canceled"

转载 作者:行者123 更新时间:2023-12-05 05:00:53 26 4
gpt4 key购买 nike

我有一个 Talend 作业正在运行,其中有几个数据流针对 Snowflake 数据库并行运行。针对表 A 的更新语句导致对表 B 的更新失败并出现以下错误:

Transaction 'uuid-of-transaction', id 'a-very-long-integer-id', is being committed, SQL execution canceled.

Call END_OPERATION(999,'String1','String2','String3','String4','Success','0')

UPDATE TableB SET BATCH_KEY = 1234, LOAD_DT = current_timestamp::timestamp_ntz, KEY_HASH = MD5(TO_VARCHAR(ARRAY_CONSTRUCT(col1))), ROW_HASH = MD5(TO_VARCHAR(ARRAY_CONSTRUCT(col2, col3))) WHERE BATCH_KEY = -1 OR BATCH_KEY IS NULL;

END_OPERATION 的代码在这里:

var cmd = 
"CALL END_OPERATION(:1,:2,:3,:4,:5,:6,null);";
try {

snowflake.execute (
{sqlText: cmd,binds: [BATCH_KEY,ENTITY,LAYER,SRC,OPERATION,OPERATION_STATUS].map(function(param){return param === undefined ? null : param})},
);
return "Succeeded.";

}
catch (err) {
return "Failed: " + err;
}


var cmd =
"UPDATE TableA SET OPERATION_STATUS=:6,END_DT=current_timestamp,ROW_COUNT=IFNULL(:7,ROW_COUNT) WHERE BATCH_KEY=:1 AND ENTITY_NAME=:2 AND LAYER_NAME=:3 AND SRC=:4 AND OPERATION_NAME=:5";
try {

snowflake.execute (
{sqlText: cmd,binds: [BATCH_KEY,ENTITY,LAYER,SRC,OPERATION,OPERATION_STATUS,ROW_COUNT].map(function(param){return param === undefined ? null : param})},
);
return "Succeeded.";

}
catch (err) {
return "Failed: " + err;
}

我不明白为什么针对 TableB 的 UPDATE 语句会被终止。它几乎立即被杀死。

最佳答案

在这里,我们需要检查运行失败 SQL 命令的同一 session 中来自 Talend 作业的所有 SQL 语句的流以及来自其他并行作业的所有语句。

从查询历史中我们可以得到 session 的 SessionID。从 Snowflake UI 的历史记录部分,我们可以根据 SessionID 进行搜索。这将列出通过该特定 session 运行的所有命令。我们可以通过对 start_date 列进行排序来按时间顺序查看所有命令,并尝试观察 SQL 语句的顺序。

您的观点确实有效,TableA 上的更新不应影响 TableB 上的更新,但在查看两个 session 的所有语句后(我们了解到 Talend 作业正在并行运行几个数据流)我们可能会遇到一个 session 中的某些 SQL 语句在从另一个 session 针对它提交更新命令之前锁定了表 B。

这里可以回顾的另一件事是工作流如何管理事务。在该 session 的相同 SQL 查询列表中,我们需要检查在 session 级别设置参数自动提交的任何语句。如果在 session 开始时将自动提交设置为 FALSE,则在提交显式提交之前, session 不会释放任何表锁。

由于这里的情况听起来有点不寻常和复杂,我们可能需要更深入地挖掘以查看这两个查询的执行日志,为此我们可能需要联系 Snowflake 支持。

关于sql - 雪花查询已终止 : "SQL execution canceled",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62927025/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com