ignite - 点燃从缓存或磁盘中获取的查询结果
问题描述
启用 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>
解决方案
所有数据都存储在堆外内存中的所谓页面中,它可以是 RAM 或磁盘,但后者需要先将页面加载到堆外,并且它不执行读取直接从磁盘。数据处理需要堆上内存,例如为 SQL 查询合并数据集、处理通信请求等。
没有可靠的方法来检测是否已将所需数据预加载到 RAM 中,尽管有一些指标可以帮助您了解集群的总体情况。即页面驱逐发生的频率等等。
您可能想要检查数据区域的以下指标。
这三个给出了加载到数据区域的数据大小的估计值:
- TotalAllocatedPages
- 页面填充因子
- 空数据页
启用持久性后,这些提供了有关我们使用磁盘进行读取的密集程度的信息(越小越好):</p>
- 页面替换率
- PagesRead
- 已替换页面
一些可能有用的实现细节: Ignite Durable Memory,Ignite Persistent Store - under the hood
推荐阅读
- python - 在 TensorFlow 2.0 中加载 numpy 权重
- reactjs - 如何使用预渲染初始状态在服务器上渲染 React?
- python - 在非常大的数据框中进行 PySpark 搜索
- angular - 按用户角色添加对菜单项的权限
- java - 用函数简化 if 语句
- html - HTML:在输入类型时间中隐藏 AM PM
- akka - 在 Akka 中将实体保留为状态或子角色
- ios - iOS 13 在深色模式下创建典型的绿色“添加”UIButton(用于联系人和音乐应用程序),带有 SF 符号和白色“加号”填充
- h2o - 为什么 h2o 需要对 hdfs 根目录进行写访问?
- typescript - 如何从工会中删除?