1

在 ESQL 中我们有 SHARED CONSTANTS,当它们是常量并且即使多个线程访问相同的值它们也不会改变时,为什么我们需要它们。

DECLARE MYCONST SHARED CONSTANT CHAR '我的常数';

或者一般我想知道为什么我们需要共享常量?

4

2 回答 2

0

使用我的想象力,您可以声明一个共享常量,以免在 Flow 之间复制 BIG 变量。
例如,如果您想要发送每次相同的消息并且想要节省时间,它在多实例流中可能很有用。它可能已经在内存中:

   DECLARE MYVAR SHARED CONSTANT BLOB X'0000' ;

我认为这种需求非常罕见。
甚至更不经常利用这一点:如果 blob 太大,放入全局变量只会适得其反。

于 2014-11-20T09:33:42.093 回答
0

根据这篇文章,阅读 SHARED CONSTANT 比阅读普通 CONSTANT 需要更多时间。似乎所有共享变量都有锁定机制,包括常量。

但可能所有非共享 CONSTANT 都会在每个流实例开始时复制到内存中。我想说,如果你有很多常量并且每个流只访问其中的几个,SHARED CONSTANTS 的性能会更高。

如果性能是一个问题,我会测试哪个选项在更短的时间内处理数据。但是没有对每一个消息流都是最好的解决方案。

于 2017-09-17T05:01:30.753 回答