Ignite 2.16 中的并行表创建性能问题

问题描述 投票:0回答:1

我正在 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 gridgain apacheignite
1个回答
0
投票

创建和删除表是 Ignite 中相对繁重的操作,而不是您经常想要执行的操作。这是集群范围的操作,因此无法并行执行。

可以使用 Java API (

Ignite#createCaches()
) 同时创建多个表。

您可以跨多个表并行插入/更新/删除记录。使用 Node.js 客户端而不是 REST API 将为您提供更好的控制和性能。

© www.soinside.com 2019 - 2024. All rights reserved.