Thanks, now its much better. it’s a little bit weird because I already tried to create those Indexes via JDBC….
Regards, Sasha Haykin Senior BI Developer T. +972-77-7745-163 M. +972-54-7939-700 [cid:image001.png@01D36DD2.48D9CF30]<http://www.radcom.com/> From: Michael Cherkasov [mailto:michael.cherka...@gmail.com] Sent: Tuesday, December 5, 2017 11:22 AM To: user@ignite.apache.org Subject: Re: Ignite poor performance Hi Sasha, Did you have time to try my advice? Did it help you? Thanks, Mike. 2017-12-04 17:00 GMT+03:00 Sasha Haykin <sas...@radcom.com<mailto:sas...@radcom.com>>: Hi, I Working on big POC for telecom industry solution I have loaded to ignite 5,000,000 objects/rows (I loaded it in the client side Please find the code below) In the metric the used of heap looks too small (for 5M rows) is it normal utilization? [04-12-2017 13:10:27][INFO ][grid-timeout-worker-#23][IgniteKernal] Metrics for local node (to disable set 'metricsLogFrequency' to 0) ^-- Node [id=c4f42f84, uptime=00:37:00.639] ^-- H/N/C [hosts=2, nodes=2, CPUs=12] ^-- CPU [cur=0.13%, avg=4.76%, GC=0%] ^-- PageMemory [pages=818037] ^-- Heap [used=1655MB, free=59.53%, comm=4090MB] ^-- Non heap [used=63MB, free=95.82%, comm=65MB] ^-- Public thread pool [active=0, idle=1, qSize=0] ^-- System thread pool [active=0, idle=8, qSize=0] ^-- Outbound messages queue [size=0] [04-12-2017 13:10:27][INFO ][grid-timeout-worker-#23][IgniteKernal] FreeList [name=null, buckets=256, dataPages=600522, reusePages=0] When I’m querying the data VIA JDBC the performance is very bad (I’m comparing it to VERTICA DB) What I’m doing wrong? The success factors for the POC is to query from 100M rows of data (with filters on dates+ filter on one element ) and get results in 3 seconds is it possible to achieve it with Ignite? Here are the example of the data + query: SELECT count(*) FROM HPA WHERE DEST_NE_NAME='destDest17' ; COUNT(*) | ---------| 48382 | Query execution time is more than 7 seconds Data sample: ID |APPLICATION_ID_NAME |AVG_FAILURE_DURATION |AVG_SUCCESS_DURATION |DEST_NE_NAME |DESTINATION_HOST |DESTINATION_REALM_NAME |NUM_OF_RETRANSMISSION_FRAMES |NUMBER_OF_REQUESTS |NUMBER_OF_RESPONSES |ORIGIN_HOST |ORIGIN_REALM_NAME |PROCEDURE_DURATION |PROCEDURE_DURATION_COUNTER |PROCEDURE_DURATION_MAX |PROCEDURE_SUBTYPE |PROCEDURE_TYPE |RELEASE_CAUSE |RELEASE_TYPE |SOURCE_NE_NAME |START_TIME |TIME_STAMP |TRANSPORT_LAYER_PROTOCOL_NAME |VLAN_ID | ----|---------------------|---------------------|---------------------|-------------|------------------|------------------------|-----------------------------|-------------------|--------------------|-------------|-------------------|-------------------|---------------------------|-----------------------|-------------------|---------------|--------------|---------------|---------------|--------------------|--------------------|-------------------------------|--------| 0 |APPLICATION_ID_NAME9 |1 |6 |destDest39 |DESTINATION_HOST5 |DESTINATION_REALM_NAME4 |1 |1 |9 |ORIGIN_HOST3 |ORIGIN_REALM_NAME6 |6 |4 |8 |PROCEDURE_SUBTYPE2 |17 |43 |RELEASE_TYPE7 |SourceDest71 |2017-12-04 14:37:56 |2017-12-04 14:37:56 |TRANSPORT_LAYER_PROTOCOL_NAME1 |48 | 1 |APPLICATION_ID_NAME7 |7 |1 |destDest56 |DESTINATION_HOST5 |DESTINATION_REALM_NAME8 |8 |6 |4 |ORIGIN_HOST1 |ORIGIN_REALM_NAME4 |2 |29 |3 |PROCEDURE_SUBTYPE2 |15 |20 |RELEASE_TYPE77 |SourceDest33 |2017-12-04 14:37:57 |2017-12-04 14:37:57 |TRANSPORT_LAYER_PROTOCOL_NAME7 |47 | There are indexes: ID START_TIME START_TIME + SOURCE_NE_NAME + DEST_NE_NAME (CREATE INDEX DINAMICHPA_TIME_DEST_SOURCE ON HPA (START_TIME,SOURCE_NE_NAME,DEST_NE_NAME)) [04-12-2017 13:09:44][INFO ][grid-nio-worker-tcp-comm-2-#27][TcpCommunicationSpi] Accepted incoming communication connection [locAddr=/10.0.5.236:47101<https://emea01.safelinks.protection.outlook.com/?url=http%3A%2F%2F10.0.5.236%3A47101&data=01%7C01%7CSashaH%40radcom.com%7Cd4b33070b1364e4d4a7c08d53bc1aefe%7C0eb9e2d98763412e97093f539e9e25bc%7C1&sdata=h2wBi8oQH4YygzBWMfH%2F0PgwYnDFWGPIHw1K4Q9vpl4%3D&reserved=0>, rmtAddr=/172.16.10.232:53754<https://emea01.safelinks.protection.outlook.com/?url=http%3A%2F%2F172.16.10.232%3A53754&data=01%7C01%7CSashaH%40radcom.com%7Cd4b33070b1364e4d4a7c08d53bc1aefe%7C0eb9e2d98763412e97093f539e9e25bc%7C1&sdata=4GAv7ehzcqzTG6bLfe0mfNj10SEot0CRnkAfufWjE68%3D&reserved=0>] [04-Dec-2017 13:09:52][WARN ][query-#290][IgniteH2Indexing] Query execution is too long [time=7152 ms, sql='SELECT COUNT(*) __C0_0 FROM PUBLIC.HPA __Z0 WHERE __Z0.DEST_NE_NAME = ?1', plan= SELECT COUNT(*) AS __C0_0 FROM PUBLIC.HPA __Z0 /* PUBLIC.DINAMICHPA_TIME_DEST_SOURCE: DEST_NE_NAME = ?1 */ WHERE __Z0.DEST_NE_NAME = ?1 , parameters=[destDest17]] [04-12-2017 13:10:27][INFO ][grid-timeout-worker-#23][IgniteKernal] Metrics for local node (to disable set 'metricsLogFrequency' to 0) ^-- Node [id=c4f42f84, uptime=00:37:00.639] ^-- H/N/C [hosts=2, nodes=2, CPUs=12] ^-- CPU [cur=0.13%, avg=4.76%, GC=0%] ^-- PageMemory [pages=818037] ^-- Heap [used=1655MB, free=59.53%, comm=4090MB] ^-- Non heap [used=63MB, free=95.82%, comm=65MB] ^-- Public thread pool [active=0, idle=1, qSize=0] ^-- System thread pool [active=0, idle=8, qSize=0] ^-- Outbound messages queue [size=0] [04-12-2017 13:10:27][INFO ][grid-timeout-worker-#23][IgniteKernal] FreeList [name=null, buckets=256, dataPages=600522, reusePages=0] ---------------------------------------------------------------------------------------------------------------------------------------------Client--------------------------------------------------------------------- Out put: [15:09:44] Topology snapshot [ver=6, servers=1, clients=1, CPUs=12, heap=5.8GB] SQL Result: [[48382]] GET in sec: 7377 -------------------------------------------------------------------------------------code----------------------------------------------------------- /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0<https://emea01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.apache.org%2Flicenses%2FLICENSE-2.0&data=01%7C01%7CSashaH%40radcom.com%7Cd4b33070b1364e4d4a7c08d53bc1aefe%7C0eb9e2d98763412e97093f539e9e25bc%7C1&sdata=d2zRpLpwyuLtxzuUYUtwf9EC20Bg7uXLETt1ADiNoG0%3D&reserved=0> * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.ignite.examples.persistentstore; import org.apache.ignite.Ignite; import org.apache.ignite.IgniteCache; import org.apache.ignite.IgniteDataStreamer; import org.apache.ignite.Ignition; import org.apache.ignite.cache.CacheAtomicityMode; import org.apache.ignite.cache.CacheWriteSynchronizationMode; import org.apache.ignite.cache.query.QueryCursor; import org.apache.ignite.cache.query.SqlFieldsQuery; import org.apache.ignite.configuration.CacheConfiguration; import org.apache.ignite.examples.datagrid.CacheQueryExample; import org.apache.ignite.examples.model.Organization; import org.apache.ignite.configuration.CollectionConfiguration; import java.util.List; /** * This example demonstrates the usage of Apache Ignite Persistent Store. * <p> * To execute this example you should start an instance of {@link PersistentStoreExampleNodeStartup} * class which will start up an Apache Ignite remote server node with a proper configuration. * <p> * When {@code UPDATE} parameter of this example is set to {@code true}, the example will populate * the cache with some data and will then run a sample SQL query to fetch some results. * <p> * When {@code UPDATE} parameter of this example is set to {@code false}, the example will run * the SQL query against the cache without the initial data pre-loading from the store. * <p> * You can populate the cache first with {@code UPDATE} set to {@code true}, then restart the nodes and * run the example with {@code UPDATE} set to {@code false} to verify that Apache Ignite can work with the * data that is in the persistence only. */ public class HPAPersistentStoreExample { /** Organizations cache name. */ private static final String ORG_CACHE = CacheQueryExample.class.getSimpleName() + "HPA"; /** */ private static final boolean UPDATE = true; /** * @param args Program arguments, ignored. * @throws Exception If failed. */ public static void main(String[] args) throws Exception { Ignition.setClientMode(true); try (Ignite ignite = Ignition.start("D:/apache-ignite-2.3.0-src/examples/config/persistentstore/example-persistent-store.xml")) { // Activate the cluster. Required to do if the persistent store is enabled because you might need // to wait while all the nodes, that store a subset of data on disk, join the cluster. ignite.active(true); CacheConfiguration<Long, HPA> cacheCfg = new CacheConfiguration<>(ORG_CACHE); cacheCfg.setSqlSchema("PUBLIC"); cacheCfg.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL); cacheCfg.setBackups(1); cacheCfg.setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC); cacheCfg.setStatisticsEnabled(true); cacheCfg.setIndexedTypes(Long.class, HPA.class); IgniteCache<Long, HPA> cache = ignite.getOrCreateCache(cacheCfg); if (UPDATE) { System.out.println("Populating the cache..."); try (IgniteDataStreamer<Long, HPA> streamer = ignite.dataStreamer(ORG_CACHE)) { streamer.allowOverwrite(true); for (long i = 0; i < 5000000; i++) { streamer.addData(i, new HPA(i)); if (i > 0 && i % 10_000 == 0) System.out.println("Done: " + i); } } } // Run SQL without explicitly calling to loadCache(). long s = System.currentTimeMillis(); QueryCursor<List<?>> cur = cache.query( new SqlFieldsQuery("select count(*) FROM HPA where DEST_NE_NAME = ?") .setArgs("destDest17")); System.out.println("SQL Result: " + cur.getAll()); long d = System.currentTimeMillis() - s; System.out.println("GET in sec: " + d); // Run get() without explicitly calling to loadCach e(). HPA hpa = cache.get(54321l); System.out.println("GET Result: " + hpa); System.out.println(cache.metrics().getOffHeapAllocatedSize()); System.out.println(cache.metrics().getSize()); System.out.println(cache.metrics().getOffHeapBackupEntriesCount()); System.out.println(cache.metrics().getOffHeapGets()); System.out.println(cache.metrics().getOffHeapHits()); System.out.println(cache.metrics().getOffHeapMisses()); System.out.println(cache.metrics().getOffHeapPuts()); System.out.println(cache.metrics().getOffHeapEvictions()); System.out.println(cache.metrics().getOffHeapHitPercentage()); } } } Regards, Sasha Haykin Senior BI Developer T. +972-77-7745-163 M. +972-54-7939-700 [cid:image004.png@01D36DCD.82865000]<https://emea01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.radcom.com%2F&data=01%7C01%7CSashaH%40radcom.com%7Cd4b33070b1364e4d4a7c08d53bc1aefe%7C0eb9e2d98763412e97093f539e9e25bc%7C1&sdata=sSyFircxoTa4Gz3Pl5m%2BOkZugzpcPFqxe1uVTTXI%2BAc%3D&reserved=0>