昨天给一个项目的数据做索引,
采用内存索引和硬盘索引交替写,内存索引大小为64个Document, 结果发现一个晚上才做了17万条数据的索引(表的字段比较多,75个字段),花费了10几个小时. 生成文件 135M 今天优化了一下,决定在内存中做索引,做晚之后写道硬盘里面. 但是这是非常消耗内存的事情,自己的机器只有512M内存,发现用的内存到323M的时候, 就会发现内存不足的错误. 最后是放在一个服务器上运行,服务器4G内存,,至强的3G 16路 CPU,这个机器跑这个程序 CPU只有6%,(普通的都是100%),运行的过程中峰值内存占用800M左右,最后40万条数据,执行了 26分钟.最后的索引文件大小是196M 所以当内存足够大,CPU比较强的时候,在服务器内存中直接建立索引应该是非常快的事情. |
===显然,采用内存可以最大减小磁盘读取。则索引的效率非常高=======
这些服务器将采用拥有大容量内存的低主频处理器。业内人士认为,这可能是采用低端的1路Woodcrest处理器的服务器,并且配置大量的内存以提高性能。这种配置可能会满足Google对内存的需求。目前还没有资料显示Google为什么需要那样多的内存。
这不奇怪,google采用分布式体系结构进行数据挖掘,其中大量的工作就是数据立方体的计算,在目前内存价格比较便宜的情况下,把单个数据立方体缓存在内存中,性能会提高很多,feelor就是这么做的。
=========
这两台机器配置都是300MHz 频率、内存512MB的的奔II服务器,共有9块9G 的硬盘。主要的搜索任务就是由它们执行。
//这可以看出,那个年代他们就是搞的大内存。