我正在尝试通过使用Apache Ignite Partitioned缓存模式来优化我遇到的性能,并且使用SQL查询基于某些值过滤缓存的简单操作对于相对较小的样本大小似乎很慢。以下是设置细节和时间 -
设置 -
SQL查询看起来像这样 - 基于对日期列和缓存的7个其他整数列进行过滤来选择5列(在cacheTable中总共有30列)
query = new SqlFieldsQuery("SELECT field1, field2, field3, field4, field5 FROM cacheTable
WHERE dateColumn >= date1 AND dateColumn <= date2 AND filter1 = value1
AND filter2 = value2 AND filter3 = value3 AND filter4 = value4
AND filter5 = value5 AND filter6 = value6 AND filter7 = value7");
cache.query(query).getAll();
缓存中的记录(或行)总数约为 400K ,过滤后返回 31K 记录。观察到的节点数量时间为:
No. of nodes Query Time (in ms)
1 317
2 215
3 171
4 176
5 126
6 114
7 96
8 92
9 133
10 125
即使在启动10个节点后,我们发现一个简单的过滤查询仍需要大约92毫秒(最小值)。 这些时间到期了吗? 是否有任何建议的配置更改可能会改善这些数字?
对于这种过滤查询,我们的SLA大约为20毫秒。是否有可能通过进一步提高性能来实现这一目标?