间歇性 SQL 查询在启动时需要时间
intermittent SQL query takes time in ignite
工具:Apache Ignite v2.6
客户端:点燃JDBC瘦驱动程序
案例:有一个包含多个条目的缓存,可以通过 SQL 查询访问。当尝试一个简单的查询时,在 18 毫秒内获得结果集。但是如果执行多次相同的查询.. 第 4 次或第 7 次查询执行时间甚至会缩短到 1.5 到 2 秒。谁能提出任何优化建议
编辑:添加缓存配置。虽然提到缓存模式是复制的,但我们只提出了一个节点。我们只是尝试 运行 简单的 select 查询,比如 select * 来自 CACHENAME;它 return 很快(20 毫秒)。但是如果我们多次重复查询..可能是第 4 次左右的命中将花费几秒钟。
<property name="clientConnectorConfiguration">
<bean class="org.apache.ignite.configuration.ClientConnectorConfiguration">
<property name="maxOpenCursorsPerConnection" value="512" />
<property name="socketSendBufferSize" value="65536"/>
<property name="socketReceiveBufferSize" value="131072"/>
<property name="threadPoolSize" value="4"/>
</bean>
</property>
<property name="cacheConfiguration">
<list>
<bean class="org.apache.ignite.configuration.CacheConfiguration">
<property name="name" value="CACHENAME" />
<property name="cacheMode" value="REPLICATED" />
<property name="sqlSchema" value="XYZ" />
<property name="indexedTypes">
<list>
<value>com.entitlement.service.ignite.pojo.KeyPOJO</value>
<value>com.entitlement.service.ignite.pojo.ValuePOJO</value>
</list>
</property>
<property name="readThrough" value="true" />
<property name="writeThrough" value="true" />
<property name="writeBehindEnabled" value="true" />
<property name="WriteBehindFlushFrequency" value="1000"/>
<property name="cacheStoreFactory">
<bean
class="org.apache.ignite.cache.store.cassandra.CassandraCacheStoreFactory">
<property name="dataSourceBean" value="cassandraAdminDataSource" />
<property name="persistenceSettingsBean" value="myPersistanceBean" />
</bean>
</property>
</bean>
</list>
</property>
我们将 cacheMode 改为 PARTITIONED 而不是 REPLICATED,发现查询性能是一致的。我猜这种行为是由于只有一个节点启动的 REPLICATED 造成的。
工具:Apache Ignite v2.6 客户端:点燃JDBC瘦驱动程序
案例:有一个包含多个条目的缓存,可以通过 SQL 查询访问。当尝试一个简单的查询时,在 18 毫秒内获得结果集。但是如果执行多次相同的查询.. 第 4 次或第 7 次查询执行时间甚至会缩短到 1.5 到 2 秒。谁能提出任何优化建议
编辑:添加缓存配置。虽然提到缓存模式是复制的,但我们只提出了一个节点。我们只是尝试 运行 简单的 select 查询,比如 select * 来自 CACHENAME;它 return 很快(20 毫秒)。但是如果我们多次重复查询..可能是第 4 次左右的命中将花费几秒钟。
<property name="clientConnectorConfiguration">
<bean class="org.apache.ignite.configuration.ClientConnectorConfiguration">
<property name="maxOpenCursorsPerConnection" value="512" />
<property name="socketSendBufferSize" value="65536"/>
<property name="socketReceiveBufferSize" value="131072"/>
<property name="threadPoolSize" value="4"/>
</bean>
</property>
<property name="cacheConfiguration">
<list>
<bean class="org.apache.ignite.configuration.CacheConfiguration">
<property name="name" value="CACHENAME" />
<property name="cacheMode" value="REPLICATED" />
<property name="sqlSchema" value="XYZ" />
<property name="indexedTypes">
<list>
<value>com.entitlement.service.ignite.pojo.KeyPOJO</value>
<value>com.entitlement.service.ignite.pojo.ValuePOJO</value>
</list>
</property>
<property name="readThrough" value="true" />
<property name="writeThrough" value="true" />
<property name="writeBehindEnabled" value="true" />
<property name="WriteBehindFlushFrequency" value="1000"/>
<property name="cacheStoreFactory">
<bean
class="org.apache.ignite.cache.store.cassandra.CassandraCacheStoreFactory">
<property name="dataSourceBean" value="cassandraAdminDataSource" />
<property name="persistenceSettingsBean" value="myPersistanceBean" />
</bean>
</property>
</bean>
</list>
</property>
我们将 cacheMode 改为 PARTITIONED 而不是 REPLICATED,发现查询性能是一致的。我猜这种行为是由于只有一个节点启动的 REPLICATED 造成的。