The Ignite SQL delete command seems to load all entries (both keys and values) on heap before deleting them from the cache. This is slow and we have seen it cause JVM heap to go OOM.
The docs state that a select is used to gather the keys of records being deleted: https://apacheignite-sql.readme.io/docs/delete But the below stack trace indicates that the embedded select statement retrieves both _KEY and _VAL. Is this required? Is there a recommended way to delete entries without causing high heap usage? Thanks, Colin. Caused by: org.apache.ignite.IgniteException: Failed to execute SQL query. Out of memory.; SQL statement: SELECT _KEY, _VAL FROM "PortfolioDataAccessCompositeService:AGGREGATE_CACHE".INDEXEDMODELIMPL WHERE SESSIONID = ?1 [90108-197] at org.apache.ignite.internal.processors.query.h2.DmlStatementsProcessor$3.iterator(DmlStatementsProcessor.java:645) ~[ignite-indexing-2.7.0.jar:2.7.0] at org.apache.ignite.internal.processors.cache.QueryCursorImpl.iterator(QueryCursorImpl.java:95) ~[ignite-core-2.7.0.jar:2.7.0] at org.apache.ignite.internal.processors.query.h2.DmlStatementsProcessor.doDelete(DmlStatementsProcessor.java:783) ~[ignite-indexing-2.7.0.jar:2.7.0] at org.apache.ignite.internal.processors.query.h2.DmlStatementsProcessor.processDmlSelectResult(DmlStatementsProcessor.java:710) ~[ignite-indexing-2.7.0.jar:2.7.0] at org.apache.ignite.internal.processors.query.h2.DmlStatementsProcessor.executeUpdateStatement(DmlStatementsProcessor.java:653) ~[ignite-indexing-2.7.0.jar:2.7.0] at org.apache.ignite.internal.processors.query.h2.DmlStatementsProcessor.updateSqlFields(DmlStatementsProcessor.java:185) ~[ignite-indexing-2.7.0.jar:2.7.0] at org.apache.ignite.internal.processors.query.h2.DmlStatementsProcessor.updateSqlFieldsLocal(DmlStatementsProcessor.java:387) ~[ignite-indexing-2.7.0.jar:2.7.0] at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.doRunPrepared(IgniteH2Indexing.java:2266) ~[ignite-indexing-2.7.0.jar:2.7.0] at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.querySqlFields(IgniteH2Indexing.java:2209) ~[ignite-indexing-2.7.0.jar:2.7.0] at org.apache.ignite.internal.processors.query.GridQueryProcessor$4.applyx(GridQueryProcessor.java:2135) ~[ignite-core-2.7.0.jar:2.7.0] at org.apache.ignite.internal.processors.query.GridQueryProcessor$4.applyx(GridQueryProcessor.java:2130) ~[ignite-core-2.7.0.jar:2.7.0] at org.apache.ignite.internal.util.lang.IgniteOutClosureX.apply(IgniteOutClosureX.java:36) ~[ignite-core-2.7.0.jar:2.7.0] at org.apache.ignite.internal.processors.query.GridQueryProcessor.executeQuery(GridQueryProcessor.java:2707) ~[ignite-core-2.7.0.jar:2.7.0] at org.apache.ignite.internal.processors.query.GridQueryProcessor.querySqlFields(GridQueryProcessor.java:2144) ~[ignite-core-2.7.0.jar:2.7.0] at org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.query(IgniteCacheProxyImpl.java:685) ~[ignite-core-2.7.0.jar:2.7.0] ... 27 more -- Sent from: http://apache-ignite-users.70518.x6.nabble.com/
