我正在尝试通过使用Apache Ignite Partitioned缓存模式来优化我遇到的性能,并且使用SQL查询基于某些值过滤缓存的简单操作对于相对较小的样本大小似乎很慢 . 以下是设置细节和时间 -
Build -
-
缓存模式:已分区
-
CPU:每个节点8个
-
服务器数量:5(从1到10个节点运行此测试,每个服务器运行2个节点)
SQL Query看起来像这样 - 基于对日期列的过滤和缓存的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毫秒 . 是否可以通过进一步提高性能来实现这一目标?