我正在 Node.js 20 环境中工作,并使用 Ignite 2.16 通过 REST API 与 Ignite 进行通信。我的应用程序主要对表执行 SQL 操作。
虽然 Ignite 在一次创建和插入一个表(大约 0.2 秒)时提供了出色的性能,但在尝试并行创建大量表时遇到了性能问题。同时创建 100 个表大约需要 15 秒。
我怀疑这种延迟是由于 Ignite 中表创建的同步特性造成的。我的应用程序需要能够同时创建和插入多个表,并且我们没有使用持久性进行存储。增加服务器节点数量似乎并没有改善并行表创建时间。
是否有配置设置或方法可以在 Ignite 中实现更高效的并行表创建?
我尝试水平和垂直扩展 Ignite,并在 Ignite XML 配置中将缓存配置中的 queryThreadPoolSize 和 queryParallelism 分别增加到 1000 和 100。然而,这并没有帮助。我还尝试在碰撞Spi属性中添加parallelJobsNumber。
以下是我使用过的碰撞和缓存配置:
<property name="collisionSpi">
<bean class="org.apache.ignite.spi.collision.fifoqueue.FifoQueueCollisionSpi">
<!-- Execute 1000 jobs at a time. -->
<property name="parallelJobsNumber" value="1000"/>
</bean>
</property>
<bean class="org.apache.ignite.configuration.CacheConfiguration">
<property name="name" value="myTableCache"/>
<property name="backups" value="0"/>
<property name="queryParallelism" value="10"/>
<property name="sqlOnheapCacheEnabled" value="true"/>
<property name="onheapCacheEnabled" value="true"/>
</bean>
谢谢!
创建和删除表是 Ignite 中相对繁重的操作,而不是您经常想要执行的操作。这是集群范围的操作,因此无法并行执行。
您可以使用 Java API (
Ignite#createCaches()
) 同时创建多个表。
您可以跨多个表并行插入/更新/删除记录。使用 Node.js 客户端而不是 REST API 将为您提供更好的控制和性能。