不同用途之间的性能比较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有两个选项:
第一个方案是自己使用线程池:
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])
}
}
第二个选项是:
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.
我正在使用 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有两个选项:
第一个方案是自己使用线程池:
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]) } }
第二个选项是:
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.