不同用途之间的性能比较IgniteCache.loadCache

Performance comparison between the different use of IgniteCache.loadCache

我正在使用 IgniteCache.loadCache 通过 RDMS 和 Ignite 集成将数据从 Oracle 加载到 Ignite 缓存中(https://apacheignite-mix.readme.io/v1.7/docs/automatic-persistence)

我的主要class将启动客户端模式Ignite并将数据写入3个节点的Ignite集群。

下面是sql数组,将查询相同table不同条件

String[] sqlArray = new String[]{
 "select * from PERSON where id >=0 and id < 10000",
  "select * from PERSON where id >=10000 and id < 20000",
  ..
 "select * from PERSON where id >=10000000 and id < 10010000",

}

运行这些sql有两个选项:

  1. 第一个方案是自己使用线程池:

    for (int i = 0; i< sqlArray.length; i++) { //submit the load through thread pool ThreadPool.submit(new Runnable() { cache.loadCache(null, Integer.class.getName(), sqlArray[i]) } }

  2. 第二个选项是:

    cache.loadCache(null, sqlArray)

请问从性能的角度来看,哪一个会更快或者它们在性能上没有显着差异?

第二种方式看起来是正确的,因为 loadCache 也使用线程池来启动 LoadCacheCustomQueryWorker 并且您在每个查询中保存了几个 ignite 计算调用。

注意:请注意参数。您的情况下的有效参数列表是:

Object[] args = new Object[] {
    Integer.class.getName(),
    "select * from PERSON where id >=0 and id < 10000",
    Integer.class.getName(),
    "select * from PERSON where id >=10000 and id < 20000",
    Integer.class.getName(),
    "select * from PERSON where id >=10000000 and id < 10010000"
}

因此,参数计数必须是偶数。第一个参数是 key type,第二个是 SQL query.