Hi,
I have 2 caches, each with POJO values that look like -
public class Value1 {
@QuerySqlField(index = true)
private Long a;
@QuerySqlField(index = true)
private String b;
}
public class Value2 {
@QuerySqlField(index = true)
private Long a;
@QuerySqlField(index = true)
private String c;
}
I have to run the following SQL query on my Ignite Cluster -
SELECT * from Value1 v1, Value2 v2 WHERE v1.a = v2.a
To test the query performance, I configured my Ignite Cluster to have only 1
server node and used 4 clients nodes to run the query. Added 50,000 Value1
objects and around 800,000 Value2 objects in the cache. I used a single node
cluster in order to avoid using affinity collocation problems when
performing cross cache joins. The average response time of the query was
around 150 seconds! :(
Server node - 4 CPUs, 8 GB Heap
Client node - 4 CPUs / client, 1 GB Heap / client
I am quite surprised to see the SQL perform poorly. I am posting my
cacheConfiguration for your reference (same for both the caches).
cacheConfig.setAtomicityMode("transactional");
cacheConfig.setCacheMode("partitioned");
cacheConfig.setBackups(1);
cacheConfig.setCopyOnRead(false);
cacheConfig.setIndexedTypes(Long.class, Value1.class);
I am wondering if the query performed poorly because of my cache
configuration or is Ignite not very efficient with cross cache joins (given
that I used only 1 node to avoid non-collcation)
Any help is appreciated!
Thank you.
--
View this message in context:
http://apache-ignite-users.70518.x6.nabble.com/Poor-cross-cache-join-SQL-performance-v2-0-0-tp14373.html
Sent from the Apache Ignite Users mailing list archive at Nabble.com.