Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 如何有效地在文件中执行随机搜索?_File_Filereader_Seek_Leveldb - Fatal编程技术网

File 如何有效地在文件中执行随机搜索?

File 如何有效地在文件中执行随机搜索?,file,filereader,seek,leveldb,File,Filereader,Seek,Leveldb,我有一个存储在磁盘上的文件,记录以自定义记录格式写入该文件。一组记录将代表一个块。在磁盘中执行读取时,只能获取块而不是记录 Block = physical record. Data = logical record. 每个逻辑记录在文件中都有一个唯一的偏移量。它更接近leveldb的记录格式 给定一组偏移量,如何有效地读取逻辑记录 实际上,在大多数当前操作系统和硬件上,这并不重要 阅读更多 首先,操作系统维护一个包含最近读取或写入的页面的。另见。许多磁盘IO操作不是由硬件立即完成的,它们也不

我有一个存储在磁盘上的文件,记录以自定义记录格式写入该文件。一组记录将代表一个块。在磁盘中执行读取时,只能获取块而不是记录

Block = physical record.
Data = logical record.
每个逻辑记录在文件中都有一个唯一的偏移量。它更接近leveldb的记录格式


给定一组偏移量,如何有效地读取逻辑记录

实际上,在大多数当前操作系统和硬件上,这并不重要

阅读更多

首先,操作系统维护一个包含最近读取或写入的页面的。另见。许多磁盘IO操作不是由硬件立即完成的,它们也不是按照您请求的顺序完成的。阅读更多关于

然后,回想一下,越来越多的磁盘是s(没有任何旋转延迟,访问时间不变)。并且当前的不使用,但因此块地址与其物理位置不直接相关(并且块本身处理映射)

在某些情况下,内核磁盘和将重新组织挂起的磁盘请求

但是,您最好在足够大的缓冲区上执行磁盘IO(通常,每个or至少有几页4KB)

在Linux上,另请参见、、系统调用

给定一组偏移量,如何有效地读取逻辑记录

您可能会对这些偏移进行排序,但实际上不会有太大变化,可能根本不会。一定要做基准测试


在实践中,使用一些类库或(索引文件)或。您可以调整一些参数(缓冲区大小),但其余的都应该信任库。

这是家庭作业吗?你的实际应用是什么?什么操作系统、文件系统、文件大小?为什么要使用
leveldb
标记?在你的问题中展示一些