Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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
mongodb中的readahead代表什么?_Mongodb_Database_Nosql - Fatal编程技术网

mongodb中的readahead代表什么?

mongodb中的readahead代表什么?,mongodb,database,nosql,Mongodb,Database,Nosql,我在mongodb上收到这个警告 WARNING: Readahead for /data is set to 1024KB We suggest setting it to 256KB (512 sectors) or less http://dochub.mongodb.org/core/readahead 当查询时,每个链接都建议将readahead值设置为较小的数字,以及如何设置 我知道将其设置为较小的值会让我摆脱警告,但我更感兴趣的是readahead代表什么?如果我将其设置为更高的

我在mongodb上收到这个警告

WARNING: Readahead for /data is set to 1024KB
We suggest setting it to 256KB (512 sectors) or less
http://dochub.mongodb.org/core/readahead
当查询时,每个链接都建议将readahead值设置为较小的数字,以及如何设置


我知道将其设置为较小的值会让我摆脱警告,但我更感兴趣的是readahead代表什么?如果我将其设置为更高的值,会产生什么影响?

预读是一项内核功能,它在块设备级别工作,并且是全局的(不依赖于进程)。 这是一种用于提高文件读取性能的技术。如果内核有理由相信某个特定文件是按顺序读取的,那么它会在应用程序请求之前尝试将文件中的块读取到内存中。readahead工作时,它会加快系统的吞吐量,因为读取应用程序不必等待其请求。相反,当readahead失败时,它会生成无用的I/O并占用其他用途所需的内存页。()

这里有一个更深入的解释->

为了解决此问题,请确保存储数据库文件的块设备的预读设置是适当的。对于随机访问使用模式,请设置较低的预读值。提前读取32(16 kB)通常效果良好

在Linux中:

  • 以root用户身份登录->
    su-

  • 运行
    sudo blockdev--report
    获取预读设置

  • 运行
    sudo blockdev--setra
    更改预读设置


  • 因为这是关于数据库配置的问题,而不是一个编程问题(这就是StackOverflow的目的),所以您应该继续提问。谢谢您的详细回答@cris cole。非常翔实的解释。