gpt4 book ai didi

sql - HANA SQLScript "Sleep"命令

转载 作者:行者123 更新时间:2023-12-04 18:40:19 26 4
gpt4 key购买 nike

是否有等效的 Sleep(1000) HANA SQLScript 中的命令?

我在 HANA SQLScript 引用中没有看到任何内容,所以我想知道是否有一种创造性的解决方法不会将 CPU 固定在 100%。

最佳答案

HANA 不支持这样的开箱即用的东西。
我可以想到两种方法,如果你绝对必须拥有这个

忙等待

正如在 SCN 上已经建议的那样,您可以创建一个过程,该过程一直停留在 while 循环中,直到达到某个时间阈值。 Amid Das 先生提出了这样的建议:

CREATE PROCEDURE PLEASE_SLEEP ( IN SLEEPING_TIME INTEGER, OUT WOKE_UP_AT TIME )
LANGUAGE SQLSCRIPT READS SQL DATA AS
V_TIME TIME;
V_TIME_TO_WAKE TIME;
BEGIN
V_TIME := CURRENT_TIME;
V_TIME_TO_WAKE < ADD_SECONDS ( TO_TIME( V_TIME ), SLEEPING_TIME );
WHILE V_TIME != V_TIME_TO_WAKE DO
V_TIME := CURRENT_TIME ;
END WHILE;
WOKE_UP_AT := V_TIME_TO_WAKE ;
END

我不确定 CPU 使用率会有多高,但绝对不是最好的。

使用表锁定超时

这个想法有点疯狂和复杂,但可能会奏效,而不会牺牲太多的 CPU 能力。

唯一可以“等待”的 SQL 命令是 LOCK TABLE .如果无法获取表锁,此命令将在一定时间后超时。可以使用 SET TRANSACTION LOCK WAIT TIMEOUT [number of milliseconds] 设置此超时。 .

现在我们只需要一个可以被过程锁定的表,而且还需要一个 不同 保持该表锁定的事务。这是棘手的部分。可能有效的是使用 XS 引擎来安排一个连续的 XS 作业,以尽可能长时间地保持所述表的锁定。或者,您可以编写一个 Python 脚本来保持表锁定。

这个想法非常具有实验性,我自己还没有尝试过。但我相信如果一切设置正确,它应该可以工作。

关于sql - HANA SQLScript "Sleep"命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27515145/

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