es中的高效文件读取方式
es读取磁盘数据的时候主要使用了两种存储类型:
NIO文件系统类型,对应FileChannel类的实现,多线程读写文件时性能较好
MMap文件系统类型,对应elasticsearch的MMapDirectory类,java的类实现为FileChannel.mmap方法,这样就可以把文件映射到虚拟地址空间中,相当于直接访问IO缓存,该方法对应的源码如下` /** Maps a file into a set of buffers */
final ByteBuffer[] map(String resourceDescription, FileChannel fc, long offset, long length) throws IOException {
if ((length >>> chunkSizePower) >= Integer.MAX_VALUE)
throw new IllegalArgumentException("RandomAccessFile too big for chunk size: " + resourceDescription);final long chunkSize = 1L << chunkSizePower;
// we always allocate one more buffer, the last one may be a 0 byte one
final int nrBuffers = (int) (length >>> chunkSizePower) + 1;ByteBuffer buffers[] = new ByteBuffer[nrBuffers];
long bufferStart = 0L;
for (int bufNr = 0; bufNr < nrBuffers; bufNr++) {
int bufSize = (int) ( (length > (bufferStart + chunkSize))
? chunkSize
: (length - bufferStart)
);
MappedByteBuffer buffer;
try {
buffer = fc.map(MapMode.READ_ONLY, offset + bufferStart, bufSize);
} catch (IOException ioe) {
throw convertMapFailedIOException(ioe, resourceDescription, bufSize);
}
if (preload) {
buffer.load();
}
buffers[bufNr] = buffer;
bufferStart += bufSize;
}return buffers;
}`
es中的高效文件读取方式相关推荐
- Linux 命令之 source -- 在当前Shell环境中从指定文件读取和执行命令
文章目录 一.命令介绍 二.命令格式 三.命令示例 一.命令介绍 source 命令会在当前 Shell 环境中从指定文件读取和执行命令.source 命令通常用于重新执行刚修改的初始化文件,使之立即 ...
- Java开发中文件读取方式总结
JAVA开发中,免不了要读文件操作,读取文件,首先就需要获取文件的路径.路径分为绝对路径和相对路径. 在文件系统中,绝对路径都是以盘符开始的,例如C:abc1.txt. 什么是相对路径呢?相对路径就是 ...
- java中文件读取方式的顺序_java中读取文件的方式
java中读取文件的方式 经常遇到java中读取文件的方式,有时候需要指定编码,有时候不需要指定编码,被搞的挺晕的,抽时间整理了一下java读取文件的方式,主要是对字符型的处理,二进制的暂时不考虑. ...
- linux中split分割文件打开方式,Linux系统下使用split命令分割大文件 (转载)
[小蜗牛闲情之作 ] 我想给一个朋友传一个大视频,有几百M,尝试多种传输办法失败后,最后想到的是把视频切开一片片"邮递"过去给他,让它自己组装起来吧. [root@pps publ ...
- Java文件读取方式和效率性能对比
场景描述 文件大小 8.67G的json文件,一共670万行. 服务器内存:2g.(只能读取一定缓冲数据,然后处理后继续读取,不能一次性加载到内存) 读取文件的内容出来,并未做业务处理. 读取方式和性 ...
- Windows 7中修复lnk文件打开方式
今天在电脑中搜索一个文件,在搜索到的列表中出现很多,就选择了其中一个,直接右键-打开方式-选择记事本,确定后打开发现全是乱码,这才发现我选择的文件是一个快捷方式,更糟糕的是在选择打开的方式中我选中了始 ...
- python的文件读取方式_python中文件读取方式
指\u201CPython编程:从入口到实践\u201D和\u201CPython编程快速启动\u201D1.文件路径获取文件路径包括绝对路径和相对路径.绝对路径是指\u201CE: \\ \\\u2 ...
- python中如何打开csv文件_在Python中从CSV文件读取数据
我正在从包含以下数据的CSV文件(xyz.CSV)中读取数据: col1,col2,col3,col4 name1,empId1,241682-27638-USD-CIGGNT ,1 name2,em ...
- 与日俱进,在 Go 1.20 中这种高效转换的方式又变了
在 Go 1.19 的开发中, string.SliceHeader 和 string.StringHeader 经历了一个生死存亡的争斗,这两个类型一度被标记为弃用( deprecated ),但是 ...
最新文章
- Alchemy环境的搭建
- 移动端网页特效:左右滑动开关
- 2015-03-19 Opportunity order by implementation detail
- 学前端可以做哪些功能?
- mysql 数据库表重建_mysql 数据库表重建
- 有没有想过,你眼中的SQL进阶,别人看来连入门都不是?
- 软件工程导论 09章面向对象方法学
- mysql的增量备份方法_mySQL 增量备份方案(转)
- Laravel框架和TP框架区别
- python弧度转角度_Python中转换角度为弧度的radians()方法
- 计算机课代表总结,计算机班的班主任工作总结.doc
- 兜兜转转还是往前了一小步
- Carsim安装教程-破解carsim2016.01和Carsim2018
- ASPCMS网站通用标签基本标签
- ROS2 Humble测试版功能包列表
- 京东全民营业拿金币之辅助脚本网页版
- 你有没有感觉现在4G的速度越来越慢了?为什么?
- Camunda 工作流并行子流程、工作流会签、或签、加签、比例签、跳转节点
- Kali渗透测试之端口扫描1——UDP、TCP、僵尸扫描、隐蔽扫描
- weWatch——一个基于vitamio的电视直播软件
热门文章
- Java 工程师成神之路!
- 《绝地求生》外挂源码被公布后,腾讯蓝洞再次出招打压!
- 禅道外部消息提示_Spring Boot中文参考指南(2.1.6)34、消息传递
- Redis bgsave 线上分析
- c语言实现的optics算法,基于深度学习的光学系统设计方法
- python sleep什么意思,Python sleep()
- servlet 返回可访问文件_Servlet第二篇「Servlet细节、ServletConfig、ServletContext」
- docker增加端口映射_docker配置lamp环境笔记
- linux php和java环境变量配置_java_linux配置java环境变量详细过程,直接上实现过程:
一. 解压安 - phpStudy...
- mvc ajax图片上传,MVC 通过ajaxSubmit上传图片并显示