2016-12-20 10 views
1

Я использую IgniteCache.loadCache(null, keyClassName, sqlArray) для загрузки данных RDMS в кэш, выполнив SQL-запрос, заданный по sqlArrayПоведение IgniteCache.loadCache

Похоже, что loadCache внутренне будет работать sqlArray с ThreadPool (каждый SQL будет выполняться в рамках задачи)

Мой вопрос: Включает ли IgniteCache внутреннее управление параллелями? У меня есть следующий сценарий:

  1. максимальное подключение моего DataSource должно быть установлено значение 200.
  2. Длина sqlArray составляет около 1000, так как у меня есть большой стол: select * from person where id >=0 and i <=20000 ... select * from person where id >=10000000 and i <=10020000

Если все эти 1000 SQL запускается в одно и то же время, тогда соединение будет недоступно из пула соединений, что приведет к ошибке

ответ

1

Метод IgniteCache.loadCache полностью зависит от конфигурации CacheStore. Похоже, что CacheAbstractJdbcStore является внутренним параллелизмом поддержки.

По умолчанию размер пула равен количеству доступных процессоров, но вы можете изменить его с помощью метода CacheAbstractJdbcStore.setMaximumPoolSize (int).

Итак, у вас закончится соединение, если только у вас есть более 200 доступных процессоров.

+0

Спасибо @ Andrey за полезный ответ, я понял. Благодарю. – Tom