IgniteCache.loadCache 的行为
Behavior of IgniteCache.loadCache
我正在使用 IgniteCache.loadCache(null, keyClassName, sqlArray)
通过 sqlArray
指定的 运行ning sql 查询将 RDMS 数据加载到缓存中
看起来 loadCache 内部将 运行 sqlArray
和 ThreadPool(每个 sql 将 运行 在一个任务中)
我的问题是:
IgniteCache 内部会控制并行度吗?我有以下情况:
- 我的数据源的最大连接数设置为 200。
- 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 个可用处理器,您将 运行 失去连接。
我正在使用 IgniteCache.loadCache(null, keyClassName, sqlArray)
通过 sqlArray
看起来 loadCache 内部将 运行 sqlArray
和 ThreadPool(每个 sql 将 运行 在一个任务中)
我的问题是: IgniteCache 内部会控制并行度吗?我有以下情况:
- 我的数据源的最大连接数设置为 200。
- 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 个可用处理器,您将 运行 失去连接。