我的Ignite表有350万行,而且还在不断增加。
如果我运行一个查询来获取所有行,或者获取最新的100k行,那么它将失败,并停止节点的执行。
SELECT * FROM <TableName>;
SELECT * FROM <TableName> ORDER By ID DESC LIMIT 100000;无论是获取前100k行还是获取最新的100k行都是有效的。
SELECT * FROM <TableName> ORDER By ID LIMIT 100000;
SELECT * FROM EVENTSDATA WHERE ID > (SELECT Max(ID) FROM EVENTSDATA - 100000) LIMIT 100000;我的Ignite配置文件:
<property name="memoryPolicies">
<list>
<bean class="org.apache.ignite.configuration.MemoryPolicyConfiguration">
<!--<property name="name" value="2GB_Region_Eviction"/>-->
<property name="initialSize" value="#{4 * 1024 * 1024 * 1024}"/>
<property name="maxSize" value="#{12L * 1024 * 1024 * 1024}"/>
<!--<property name="pageEvictionMode" value="RANDOM_2_LRU"/>-->
</bean>
</list>
</property>
<property name="dataStorageConfiguration">
<bean class="org.apache.ignite.configuration.DataStorageConfiguration">
<property name="defaultDataRegionConfiguration">
<bean class="org.apache.ignite.configuration.DataRegionConfiguration">
<property name="initialSize" value="#{1 * 1024 * 1024 * 1024}"/>
<property name="maxSize" value="#{8L * 1024 * 1024 * 1024}" />
<!-- 50 GB. -->
<property name="persistenceEnabled" value="true" />
</bean>
</property>
</bean>
</property>
<property name="discoverySpi">
<bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
<property name="ipFinder">
<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
<property name="addresses">
<list>
<value>127.0.0.1:47500..47509</value>
</list>
</property>
</bean>
</property>
</bean>
</property>

我们遵循第一种方法,如图所示。
有人能向我推荐查询优化或apache Ignite配置吗?
发布于 2019-12-30 03:35:19
最有可能的情况是,当Java Heap达到饱和时,由于内存不足异常或长时间GC暂停而导致节点失败。一种主要技术是增加堆大小和调优failureDetection超时。
但是在采用这种方法之前,我不确定是否真的需要用SQL读取整个表。如果您需要遍历重要的数据子集,那么使用带有scan查询或本地SQL查询的计算任务:https://www.gridgain.com/docs/latest/developers-guide/collocated-computations
至于SQL调优,请查看此页面:https://www.gridgain.com/docs/latest/perf-troubleshooting-guide/sql-tuning
发布于 2020-01-31 00:45:11
尝试使用“惰性”模式进行查询: SqlFieldsQuery#setLazy。它非常适用于使用简单过滤器(没有聚合和子查询)的简单普通SELECT。在这种情况下,引擎迭代数据,而不是将所有结果集加载到堆中。
https://stackoverflow.com/questions/59511798
复制相似问题