首页 > 解决方案 > 点燃从缓存或磁盘中获取的查询结果

问题描述

启用 Ignite Native Persistence 后,有没有办法知道查询结果是从缓存还是磁盘中获取?

我正在使用Apache Ignite 2.7.5,其中 2 个节点以分区模式运行,每个节点都有以下配置。

            <bean class="org.apache.ignite.configuration.DataStorageConfiguration">
                <!-- Redefining the default region's settings -->
                <property name="pageSize" value="#{4 * 1024}"/>
                <!--<property name="writeThrottlingEnabled" value="true"/>-->
                <property name="defaultDataRegionConfiguration">
                    <bean class="org.apache.ignite.configuration.DataRegionConfiguration">
                        <property name="persistenceEnabled" value="true"/>
                        <property name="initialSize" value="#{105L * 1024 * 1024 * 1024}"/>
                        <property name="name" value="Default_Region"/>
                        <!--Setting the size of the default region to 4GB. -->
                        <property name="maxSize" value="#{120L * 1024 * 1024 * 1024}"/>
                        <property name="checkpointPageBufferSize"
                                  value="#{4096L * 1024 * 1024}"/>
                        <!--<property name="pageEvictionMode" value="RANDOM_2_LRU"/>-->
                    </bean>
                </property>
            </bean>

标签: ignite

解决方案


所有数据都存储在堆外内存中的所谓页面中,它可以是 RAM 或磁盘,但后者需要先将页面加载到堆外,并且它不执行读取直接从磁盘。数据处理需要堆上内存,例如为 SQL 查询合并数据集、处理通信请求等。

没有可靠的方法来检测是否已将所需数据预加载到 RAM 中,尽管有一些指标可以帮助您了解集群的总体情况。即页面驱逐发生的频率等等。

您可能想要检查数据区域的以下指标。

这三个给出了加载到数据区域的数据大小的估计值:

  • TotalAllocatedPages
  • 页面填充因子
  • 空数据页

启用持久性后,这些提供了有关我们使用磁盘进行读取的密集程度的信息(越小越好):​</p>

  • 页面替换率
  • PagesRead
  • 已替换页面

一些可能有用的实现细节: Ignite Durable MemoryIgnite Persistent Store - under the hood


推荐阅读