在 ESQL 中我们有 SHARED CONSTANTS,当它们是常量并且即使多个线程访问相同的值它们也不会改变时,为什么我们需要它们。
DECLARE MYCONST SHARED CONSTANT CHAR '我的常数';
或者一般我想知道为什么我们需要共享常量?
在 ESQL 中我们有 SHARED CONSTANTS,当它们是常量并且即使多个线程访问相同的值它们也不会改变时,为什么我们需要它们。
DECLARE MYCONST SHARED CONSTANT CHAR '我的常数';
或者一般我想知道为什么我们需要共享常量?
使用我的想象力,您可以声明一个共享常量,以免在 Flow 之间复制 BIG 变量。
例如,如果您想要发送每次相同的消息并且想要节省时间,它在多实例流中可能很有用。它可能已经在内存中:
DECLARE MYVAR SHARED CONSTANT BLOB X'0000' ;
我认为这种需求非常罕见。
甚至更不经常利用这一点:如果 blob 太大,放入全局变量只会适得其反。
根据这篇文章,阅读 SHARED CONSTANT 比阅读普通 CONSTANT 需要更多时间。似乎所有共享变量都有锁定机制,包括常量。
但可能所有非共享 CONSTANT 都会在每个流实例开始时复制到内存中。我想说,如果你有很多常量并且每个流只访问其中的几个,SHARED CONSTANTS 的性能会更高。
如果性能是一个问题,我会测试哪个选项在更短的时间内处理数据。但是没有对每一个消息流都是最好的解决方案。