0

我有许多输出一段时间(1~24 小时)的 EPL 语句,以下是我的语句

“SELECT MessageID, VName, count(VName) as count FROM DDIEvent(MajorType=4).std:groupwin(VName).win:time(3 小时).win:length(10) 按 VName 组具有 count(VName) > = 每 3 小时输出 10 次"

如果没有长度窗口的限制,我的案例将在 3 小时内保留大约 70 万条记录。
在上面,我的测试用例只有 100 个不同的 VName。据我了解,最多可以同时保存 1000 条记录,(100 * 10[length]) 对吗?

但是我的应用程序的内存使用量将不断增长,直到输出到侦听器。
内存使用与没有长度窗口的样本几乎相同。
在输出给听众后,内存明显下降。
然后,另一个循环开始,记忆缓慢增长,直到 3 小时后。
我已经检查了文档,没有找到“输出”关键字的内存相关主题。
有谁知道真正的根本原因是什么?以及如何避免?还是只是我的 EPL 的问题?

谢谢~

4

1 回答 1

0

如果您的查询从 select 子句中删除了“MessageId”,它将成为常规聚合查询。您可以改为执行“last(MessageId)”。因为“MessageId”在那里,引擎传递的行是每个事件的行,而不是每个聚合组的行。

于 2015-08-26T12:38:52.953 回答