2016-12-22 6 views
0

Я использую IgniteCache.loadCache для загрузки данных из Oracle в Ignite Cache с RDMS и Ignite интеграции (https://apacheignite-mix.readme.io/v1.7/docs/automatic-persistence)Сравнение производительности между различными использования IgniteCache.loadCache

Мой главный класс начнет режим клиента Ignite и запишет данные к клану Ignite из 3 узлов.

Ниже приводится 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", 

} 

Есть два варианта для запуска этих SQLs:

  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)

Я хотел бы спросить, с точки зрения на производительность, которая одна будет быстрее, или они не будут иметь существенную разницу в производительности?

ответ

1

Второй способ выглядит правильно, потому что loadCache используется для пула потоков для запуска LoadCacheCustomQueryWorker, и вы сохраняете несколько разыгрывающих вычислительных вызовов по каждому запросу.

NB: Обращайте внимание на аргументы. Действительным списком аргументов в вашем случае является:

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-запрос.

+0

Спасибо @Taras. Спасибо за напоминание об использовании API. Из моего наблюдения вариант 2 быстрее, чем вариант 1, мне просто интересно, почему это могло произойти за сценой. – Tom