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
Run Code Online (Sandbox Code Playgroud)
我不确定CPU的使用量会有多大,但绝对不是最好的.
这个想法有点疯狂和复杂,但可能只是工作,而不会牺牲太多的CPU能力.
唯一可以"等待"的SQL命令是LOCK TABLE
.如果无法获取表锁,此命令将在一定时间后超时.可以使用以下命令设置此超时SET TRANSACTION LOCK WAIT TIMEOUT [number of milliseconds]
.
现在我们只需要一个可以被过程锁定的表,但也需要一个保持该表被锁定的不同事务.这是棘手的部分.可能有用的是使用XS引擎来安排连续的XS作业,以尽可能长时间地锁定所述表.或者,您可以编写一个Python脚本来保持表的锁定.
这个想法很实验,我自己也没试过.但我相信,如果一切设置正确,它应该可行.
归档时间: |
|
查看次数: |
3076 次 |
最近记录: |