[英]How to limit memory consumption in Esper Window
我的應用程序中有以下查詢 window。 我想知道 Employee 事件何時第一次出現(新 Employee )或者現有 Employee 是否有任何更新。 我的應用程序正在獲得大量更新,我懷疑下面的 Window 不只保留 memory 中的最后兩條記錄,並且由於 memory 的使用隨着時間的推移而增加。 有什么辦法可以確保 Window 中只有最后兩條記錄可用?
@name('stmtUpdateEmployee') select * from Employee#groupwin(empId)#length(2)
where
prev(1, age) <> age OR
prev(1, dept) <> dept OR
prev(1, address) <> address OR
prev(1, empId) is null;
我懷疑下面的 Window 不只保留 memory 中的最后兩條記錄,並且由於 memory 的使用隨着時間的推移而增加
你的懷疑是正確的。 memory..中會多出最后兩條記錄,具體取決於數據。 多很多。
如Esper Reference 5.6.8部分所述,select 子句中的groupwin(empId)
行......
select * from Employee#groupwin(empId)#length(2)
為每個鍵值創建一個單獨的數據 window,查詢規划器在Employee
上創建一個 hash 索引,基本上導致保留所有具有唯一empId
的員工事件。
所以這將隨着唯一員工數量的增加而增長......至少會有 2 * 唯一員工事件的數量(因為這是 2 的長度,最新的員工事件和之前的員工事件在 memory 中。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.