内存和磁盘的性能

用脚趾头想想都知道, 磁盘性能肯定不如内存, 这是毫无疑问的.

但是, 实际情况往往不是这样. 

这是因为磁盘访问都是通过操作系统来做的, 应用程序呼叫操作系统的服务, 由操作系统负责完成磁盘读写.

特别当以只读方式打开的时候, 如果内存足够, 操作系统有足够的理由把磁盘的数据缓存到内存, 而且不容易失效.

这个问题特别出现在现在 k => v 的服务流行的时候, 很容易想当然以为K => V服务速度比磁盘快. 

实际上, 由于k => v需要建立索引, 无法逃脱 key的比较, 而且由于value不是固定大小, 会造成内存分配, 释放的困难

而且操作系统的文件,可以通过多级目录很容易实现 "索引". 并且, 操作系统有权力将文件路径替换为磁盘节点号. 这个时候, 读操作可以简化为内存的节点号寻址. 速度几乎无法超越.

大多时候,简单的磁盘静态文件数据 + 合理的目录规划 性能要远远好过k v服务器, 并且在稳定性,健壮性以击倒性优势胜出.

测试很简单, 用 sha1 简单实现 a/b/c/c/的目录, 数据读写性能要远远胜过 memcached, mongodb等.

操作系统是很好的仆人.

你可能感兴趣的:(内存和磁盘的性能)