IgniteCache.loadCache 的行为

Behavior of IgniteCache.loadCache

我正在使用 IgniteCache.loadCache(null, keyClassName, sqlArray) 通过 sqlArray

指定的 运行ning sql 查询将 RDMS 数据加载到缓存中

看起来 loadCache 内部将 运行 sqlArray 和 ThreadPool(每个 sql 将 运行 在一个任务中)

我的问题是: IgniteCache 内部会控制并行度吗?我有以下情况:

  1. 我的数据源的最大连接数设置为 200。
  2. sql数组的长度约为 1000,因为我有一个很大的 table: select * from person where id >=0 and i <=20000 ... select * from person where id >=10000000 and i <=10020000

如果同时出现这1000个sql 运行,那么连接池中的连接将不可用,从而导致错误

IgniteCache.loadCache 方法完全依赖配置的 CacheStore 实现。看起来 CacheAbstractJdbcStore 在内部支持并行性。

默认情况下,池大小等于可用处理器的数量,但您可以使用 CacheAbstractJdbcStore.setMaximumPoolSize(int) 方法自由更改它。

因此,如果您有超过 200 个可用处理器,您将 运行 失去连接。