2015-08-25 6 views
0

У меня есть много EPL заявлений, которые выводят период времени (1 ~ 24 часов), и следующее мое утверждениеNEsper использование памяти "Выход" ключевого слова

«SELECT MessageID, VNAME, граф (VNAME), как count FROM DDIEvent (MajorType = 4) .std: groupwin (VName) .win: время (3 часа) .win: длина (10) группа по VName со счетом (VName)> = 10 выходным последним каждые 3 часа "

Если нет предела в окне длины, мой случай сохранит около 700 тыс. Записей за 3 часа.
И выше, мой тестовый пример содержит только 100 разных VName. Насколько я понимаю, в то же время будет храниться до 1000 записей в памяти (100 * 10 [длина]), верно?

Но использование памяти в моем приложении будет расти до вывода слушателя.
Использование памяти почти такое же, как образец без окна длины.
И после выхода на слушателя память значительно падает.
Затем начинается еще один цикл, память медленно растет до 3 часов.
Я уже проверяю документ, не нахожу тему, связанную с памятью, с ключевым словом «output».
Кто-нибудь знает, что является действительно первопричиной? И как этого избежать? Или просто проблема EPL?

Спасибо ~

ответ

0

Если запрос удаляет «MessageId» от выбора пункта, он становится регулярным запрос агрегации. Вместо этого вы можете сделать «последний (MessageId)». Поскольку в «MessageId» есть строки, которые поставляет двигатель, это строка для каждого события, а не строка для каждой группы агрегации.

+0

Я попробовал «последний (MessageID)» в моем предложении select, но использование памяти по-прежнему совпадает с исходным. Выпуск после выхода слушателя, есть ли у вас какие-либо идеи по этому поводу? Или любое другое заявление EPL для достижения моей цели? Спасибо. –

Смежные вопросы