点燃从缓存或磁盘中获取的查询结果
Ignite query result fetched from cache or disk
启用 Ignite Native Persistence 后,有没有办法知道查询结果是从缓存还是磁盘中获取的?
我在 PARTITIONED 模式下使用 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>
所有数据都存储在位于堆外内存中的所谓页面中,它可以是 RAM 也可以是磁盘,但是对于后者,Ignite 需要先将页面加载到堆外,并且它不直接从磁盘执行读取。数据处理需要堆内存,例如为 SQL 查询合并数据集、处理通信请求等。
没有可靠的方法来检测是否已将一段所需数据预加载到 RAM 中,但有一些指标可以帮助您了解集群的总体情况。 IE。页面驱逐发生的频率等等。
您可能需要检查数据区域的以下指标。
这三个估计加载到数据区域的数据大小:
- TotalAllocatedPages
- PagesFillFactor
- 空数据页
启用持久性后,这些提供了有关我们使用磁盘进行读取的密集程度的信息(越小越好):
- PagesReplaceRate
- 阅读页数
- 替换页数
一些可能有用的实现细节:
Ignite Durable Memory, Ignite Persistent Store - under the hood
启用 Ignite Native Persistence 后,有没有办法知道查询结果是从缓存还是磁盘中获取的?
我在 PARTITIONED 模式下使用 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>
所有数据都存储在位于堆外内存中的所谓页面中,它可以是 RAM 也可以是磁盘,但是对于后者,Ignite 需要先将页面加载到堆外,并且它不直接从磁盘执行读取。数据处理需要堆内存,例如为 SQL 查询合并数据集、处理通信请求等。
没有可靠的方法来检测是否已将一段所需数据预加载到 RAM 中,但有一些指标可以帮助您了解集群的总体情况。 IE。页面驱逐发生的频率等等。
您可能需要检查数据区域的以下指标。
这三个估计加载到数据区域的数据大小:
- TotalAllocatedPages
- PagesFillFactor
- 空数据页
启用持久性后,这些提供了有关我们使用磁盘进行读取的密集程度的信息(越小越好):
- PagesReplaceRate
- 阅读页数
- 替换页数
一些可能有用的实现细节: Ignite Durable Memory, Ignite Persistent Store - under the hood