首页 > 解决方案 > 间歇性 SQL 查询需要时间来点燃

问题描述

工具:Apache Ignite v2.6 客户端:Ignite JDBC Thin Driver

案例:有一个包含多个条目的缓存,并且可以通过 SQL 查询访问。尝试简单查询时,在 18 毫秒内获得结果集。但是如果多次执行相同的查询。第 4 次或第 7 次查询执行时间甚至会达到 1.5 到 2 秒。任何人都可以建议任何优化

编辑:添加缓存配置。虽然提到缓存模式是 REPLICATE,但我们只提出了一个节点。我们只是尝试运行简单的选择查询,例如 select * from CACHENAME;并快速返回(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>

标签: ignite

解决方案


我们把cacheMode改成了PARTITIONED而不是REPLICATED,发现查询性能是一致的。我猜这种行为是由于 REPLICATED 只启动了一个节点。


推荐阅读