当前位置:  开发笔记 > 运维 > 正文

需要了解使用RAMDirectory的优缺点

如何解决《需要了解使用RAMDirectory的优缺点》经验,为你挑选了3个好方法。

我需要提高Lucene搜索查询的性能.我可以使用RAMDirectory吗?它是否可以优化性能?是否有任何索引大小限制?如果有人能列出使用RAMDirectory的优点和缺点,我将不胜感激.

谢谢.



1> leef..:

我比较FSDirectory和RAMDirectory.

索引大小为1.4G

Centos,5G内存

搜索1000个关键字,平均/最小/最大响应时间(毫秒)就在这里

FSDirectory

首次运行:351/7/2611

第二轮:47/7/837

第三次运行(重启app):53/7/2343

RAMDirectory

第一次运行:38/7/1133

第二轮:34/7/189

第三次运行(重启应用程序):38/7/959

所以,你可以看到RAMDirectory比FSDirectory更快,但在'os file cache warm up'之后,速度差距并不那么明显.RMADirectory的缺点是什么?在我的测试中

它占用更多内存,1.4G文件需要大约2G才能将其加载到内存中.而FSDirectory仅使用700米.那么这意味着完整的gc需要更长的时间.

它需要更多的时间来加载,尤其是当索引文件很大时.打开索引时需要将数据从文件复制到内存.这意味着重启应用程序时会阻止请求更长时间.

在同一时间维护两个索引并不是那么实际.因为我们的app会每隔几个小时切换一次索 我们希望新索引正在升温,而旧索引仍然在同一个tomcat中工作.



2> RichieHindle..:

RAMDirectory更快,但不会写入磁盘.它只在您的程序运行时才存在,并且必须在每次程序运行时从头开始创建.

如果您的索引足够小以适应RAM,并且您不经常更新它,则可以在磁盘上维护索引,然后使用RAMDirectory(Directory dir)构造函数从中创建RAMDirectory .一旦你支付了加载它的代价,那么查询它应该比查询磁盘上的那个更快.但是要测量差异 - 如果索引可以作为RAMDirectory放入内存中,那么它也可以适合磁盘缓存,因此您可能看不到太多差异.



3> bajafresh4li..:

您应该分析RAMDirectory的使用。至少在Linux中,由于OS缓冲I / O的方式,使用RAMDirectory不会比使用默认的FSDirectory快。

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有