Actually, JDBC driver should extract data page by page. Need to take an in-depth look.
Kind regards, Alex. On Mon, Jun 19, 2017 at 3:08 PM, Anil [via Apache Ignite Users] < ml+s70518n13953...@n6.nabble.com> wrote: > HI Alex, > > I have attached the ignite client xml. 4L means 0.4 million records. > Sorry, I didn't generate JFR. But created heap dump. > > Do you agree that Jdbc driver loading everything in memory and next() just > for conversion ? > > Thanks > > On 19 June 2017 at 17:16, Alexander Fedotov <[hidden email] > <http:///user/SendEmail.jtp?type=node&node=13953&i=0>> wrote: > >> Hi Anil. >> >> Could you please also share C:/Anil/ignite-client.xml ? As well, it >> would be useful if you took JFR reports for the case with allocation >> profiling enabled. >> Just to clarify, by 4L do you mean 4 million entries? >> >> Kind regards, >> Alex. >> >> On Mon, Jun 19, 2017 at 10:15 AM, Alexander Fedotov <[hidden email] >> <http:///user/SendEmail.jtp?type=node&node=13953&i=1>> wrote: >> >>> Thanks. I'll take a look and let you know about any findings. >>> >>> Kind regards, >>> Alex >>> >>> 18 июня 2017 г. 3:33 PM пользователь "Anil" <[hidden email] >>> <http:///user/SendEmail.jtp?type=node&node=13953&i=2>> написал: >>> >>> Hi Alex, >>> >>> test program repository - https://github.com/adasari/t >>> est-ignite-jdbc.git >>> >>> please let us if you have any suggestions/questions. thanks. >>> >>> Thanks >>> >>> On 15 June 2017 at 10:58, Anil <[hidden email] >>> <http:///user/SendEmail.jtp?type=node&node=13953&i=3>> wrote: >>> >>>> Sure. thanks >>>> >>>> On 14 June 2017 at 19:51, afedotov <[hidden email] >>>> <http:///user/SendEmail.jtp?type=node&node=13953&i=4>> wrote: >>>> >>>>> Hi, Anil. >>>>> >>>>> Could you please share your full code (class/method) you are using to >>>>> read data. >>>>> >>>>> Kind regards, >>>>> Alex >>>>> >>>>> 12 июня 2017 г. 4:07 PM пользователь "Anil [via Apache Ignite Users]" >>>>> <[hidden >>>>> email] <http:///user/SendEmail.jtp?type=node&node=13706&i=0>> написал: >>>>> >>>>>> Do you have any advice on implementing large records export from >>>>>> ignite ? >>>>>> >>>>>> I could not use ScanQuery right as my whole application built around >>>>>> Jdbc driver and writing complex queries in scan query is very difficult. >>>>>> >>>>>> Thanks >>>>>> >>>>>> On 10 June 2017 at 18:48, Anil <[hidden email] >>>>>> <http:///user/SendEmail.jtp?type=node&node=13626&i=0>> wrote: >>>>>> >>>>>>> I understand from the code that there is no cursor from h2 db (or >>>>>>> ignite embed h2 db) internally and all mapper response consolidated at >>>>>>> reducer. It means when exporting large number of records, all data is in >>>>>>> memory. >>>>>>> >>>>>>> if (send(nodes, >>>>>>> oldStyle ? >>>>>>> new GridQueryRequest(qryReqId, >>>>>>> r.pageSize, >>>>>>> space, >>>>>>> mapQrys, >>>>>>> topVer, >>>>>>> extraSpaces(space, qry.spaces()), >>>>>>> null, >>>>>>> timeoutMillis) : >>>>>>> new GridH2QueryRequest() >>>>>>> .requestId(qryReqId) >>>>>>> .topologyVersion(topVer) >>>>>>> .pageSize(r.pageSize) >>>>>>> .caches(qry.caches()) >>>>>>> .tables(distributedJoins ? qry.tables() >>>>>>> : null) >>>>>>> .partitions(convert(partsMap)) >>>>>>> .queries(mapQrys) >>>>>>> .flags(flags) >>>>>>> .timeout(timeoutMillis), >>>>>>> oldStyle && partsMap != null ? new >>>>>>> ExplicitPartitionsSpecializer(partsMap) : null, >>>>>>> false)) { >>>>>>> >>>>>>> awaitAllReplies(r, nodes, cancel); >>>>>>> >>>>>>> *// once the responses from all nodes for the query received.. >>>>>>> proceed further ?* >>>>>>> >>>>>>> if (!retry) { >>>>>>> if (skipMergeTbl) { >>>>>>> List<List<?>> res = new ArrayList<>(); >>>>>>> >>>>>>> // Simple UNION ALL can have multiple >>>>>>> indexes. >>>>>>> for (GridMergeIndex idx : r.idxs) { >>>>>>> Cursor cur = idx.findInStream(null, >>>>>>> null); >>>>>>> >>>>>>> while (cur.next()) { >>>>>>> Row row = cur.get(); >>>>>>> >>>>>>> int cols = row.getColumnCount(); >>>>>>> >>>>>>> List<Object> resRow = new >>>>>>> ArrayList<>(cols); >>>>>>> >>>>>>> for (int c = 0; c < cols; c++) >>>>>>> resRow.add(row.getValue(c).get >>>>>>> Object()); >>>>>>> >>>>>>> res.add(resRow); >>>>>>> } >>>>>>> } >>>>>>> >>>>>>> resIter = res.iterator(); >>>>>>> }else { >>>>>>> // incase of split query scenario >>>>>>> } >>>>>>> >>>>>>> } >>>>>>> >>>>>>> return new GridQueryCacheObjectsIterator(resIter, cctx, >>>>>>> keepPortable); >>>>>>> >>>>>>> >>>>>>> Query cursor is iterator which does column value mapping per page. >>>>>>> But still all records of query are still in memory. correct? >>>>>>> >>>>>>> Please correct me if I am wrong. thanks. >>>>>>> >>>>>>> >>>>>>> Thanks >>>>>>> >>>>>>> >>>>>>> On 10 June 2017 at 15:53, Anil <[hidden email] >>>>>>> <http:///user/SendEmail.jtp?type=node&node=13626&i=1>> wrote: >>>>>>> >>>>>>>> >>>>>>>> jvm parameters used - >>>>>>>> >>>>>>>> -Xmx6144m -XX:NewSize=512m -XX:+UseTLAB -XX:+UseG1GC >>>>>>>> -XX:MaxGCPauseMillis=500 -XX:+ScavengeBeforeFullGC >>>>>>>> -XX:+DisableExplicitGC >>>>>>>> -Xloggc:C:/Anil/dumps/gc-client.log -XX:+HeapDumpOnOutOfMemoryError >>>>>>>> -XX:+PrintGCCause -XX:+PrintGCDetails -XX:+PrintAdaptiveSizePolicy >>>>>>>> -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+HeapDumpAfterFullGC >>>>>>>> -XX:+ScavengeBeforeFullGC -XX:+DisableExplicitGC -XX:+AlwaysPreTouch >>>>>>>> -XX:+PrintFlagsFinal -XX:HeapDumpPath=C:/Anil/dumps >>>>>>>> /heapdump-client.hprof >>>>>>>> >>>>>>>> Thanks. >>>>>>>> >>>>>>>> On 10 June 2017 at 15:06, Anil <[hidden email] >>>>>>>> <http:///user/SendEmail.jtp?type=node&node=13626&i=2>> wrote: >>>>>>>> >>>>>>>>> HI, >>>>>>>>> >>>>>>>>> I have implemented export feature of ignite data using JDBC >>>>>>>>> Interator >>>>>>>>> >>>>>>>>> ResultSet rs = statement.executeQuery(); >>>>>>>>> >>>>>>>>> while (rs.next()){ >>>>>>>>> // do operations >>>>>>>>> >>>>>>>>> } >>>>>>>>> >>>>>>>>> and fetch size is 200. >>>>>>>>> >>>>>>>>> when i run export operation twice for 4 L records whole 6B is >>>>>>>>> filled up and never getting released. >>>>>>>>> >>>>>>>>> Initially i thought that operations transforting result set to >>>>>>>>> file causing the memory full. But not. >>>>>>>>> >>>>>>>>> I just did follwoing and still the memory is growing and not >>>>>>>>> getting released >>>>>>>>> >>>>>>>>> while (rs.next()){ >>>>>>>>> // nothing >>>>>>>>> } >>>>>>>>> >>>>>>>>> num #instances #bytes class name >>>>>>>>> ---------------------------------------------- >>>>>>>>> 1: 55072353 2408335272 [C >>>>>>>>> 2: 54923606 1318166544 java.lang.String >>>>>>>>> 3: 779006 746187792 [B >>>>>>>>> 4: 903548 304746304 [Ljava.lang.Object; >>>>>>>>> 5: 773348 259844928 net.juniper.cs.entity.Install >>>>>>>>> Base >>>>>>>>> 6: 4745694 113896656 java.lang.Long >>>>>>>>> 7: 1111692 44467680 sun.nio.cs.UTF_8$Decoder >>>>>>>>> 8: 773348 30933920 org.apache.ignite.internal.bi >>>>>>>>> nary.BinaryObjectImpl >>>>>>>>> 9: 895627 21495048 java.util.ArrayList >>>>>>>>> 10: 12427 16517632 [I >>>>>>>>> >>>>>>>>> >>>>>>>>> Not sure why string objects are getting increased. >>>>>>>>> >>>>>>>>> Could you please help in understanding the issue ? >>>>>>>>> >>>>>>>>> Thanks >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> ------------------------------ >>>>>> If you reply to this email, your message will be added to the >>>>>> discussion below: >>>>>> http://apache-ignite-users.70518.x6.nabble.com/High-heap-on- >>>>>> ignite-client-tp13594p13626.html >>>>>> To start a new topic under Apache Ignite Users, email [hidden email] >>>>>> <http:///user/SendEmail.jtp?type=node&node=13706&i=1> >>>>>> To unsubscribe from Apache Ignite Users, click here. >>>>>> NAML >>>>>> <http://apache-ignite-users.70518.x6.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml> >>>>>> >>>>> >>>>> ------------------------------ >>>>> View this message in context: Re: High heap on ignite client >>>>> <http://apache-ignite-users.70518.x6.nabble.com/High-heap-on-ignite-client-tp13594p13706.html> >>>>> Sent from the Apache Ignite Users mailing list archive >>>>> <http://apache-ignite-users.70518.x6.nabble.com/> at Nabble.com. >>>>> >>>> >>>> >>> >>> >> > > *ignite-client.xml* (2K) Download Attachment > <http://apache-ignite-users.70518.x6.nabble.com/attachment/13953/0/ignite-client.xml> > > > ------------------------------ > If you reply to this email, your message will be added to the discussion > below: > http://apache-ignite-users.70518.x6.nabble.com/High-heap-on-ignite-client- > tp13594p13953.html > To start a new topic under Apache Ignite Users, email > ml+s70518n1...@n6.nabble.com > To unsubscribe from Apache Ignite Users, click here > <http://apache-ignite-users.70518.x6.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=1&code=YWxleGFuZGVyLmZlZG90b2ZmQGdtYWlsLmNvbXwxfC0xMzYxNTU0NTg=> > . > NAML > <http://apache-ignite-users.70518.x6.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml> > -- View this message in context: http://apache-ignite-users.70518.x6.nabble.com/High-heap-on-ignite-client-tp13594p13956.html Sent from the Apache Ignite Users mailing list archive at Nabble.com.