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

时间:2016-12-22 07:57:42

标签: ignite

我正在使用IgniteCache.loadCache将数据从Oracle加载到带有RDMS和Ignite Integration的Ignite Cache(https://apacheignite-mix.readme.io/v1.7/docs/automatic-persistence

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

以下是将使用不同条件

查询同一个表的sql数组
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)

  3. 我会从表现的角度问,哪一个会更快,或者他们的表现不会有显着差异?

1 个答案:

答案 0 :(得分:1)

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

注意:请注意参数。您的案例中的有效参数列表是:

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"
}

因此,参数计数必须是偶数。第一个参数是密钥类型,第二个参数是 SQL查询