搜索引擎CACHE策略研究

/*版权声明:可以任意转载,转载时请务必标明文章原始出处和作者信息 .*/    

  

                        搜索引擎CACHE策略研究

 

                         张俊林

             timestamp:2005年10月

 

一.关于搜索引擎用户查询得出的结论:

(1)      用户查询有很大比例的重复性。有30%到40%的用户查询是重复查询。

(2)       大多数重复的用户查询会在较短的间隔时间被再次重复访问。

(3)       大多数用户的查询是短查询,大约包含25个单词。

(4)       用户一般只查看返回结果的前三个页面(前30个返回结果)。58%用户只查看第一个页面(TOP 10,15%用户查看第二个页面,不超过12%的用户会查看第三个页面以后的检索结果。

(5)       关于用户查询差异程度。有比较大的查询程度,一百万个用户查询中大约63.7%的用户查询只出现过一次。另外一方面,集中的重复查询也非常集中:25个高频查询大约占总查询的1.23%-1.5%.

二.CACHE的基本策略

(1)       LRU:最近最少使用策略

基本假设:最近很少被重复访问的缓存记录在最近的将来也不会被访问。这是最简单的一种CACHE策略。将用户查询按照最近使用时间进行排序,淘汰策略将最老的查询淘汰出CACHE

 

(2)       FBR:不仅考虑时间也考虑引用计数的问题。

FBRLRU策略的基础上将CACHE分为三个不同的部分:NEW,OLD,MIDDLE

NEW:存储最近被访问过的记录;

OLD:存储最近最少使用的一批记录;

MIDDLE:存储介于NEWOLD之间的一批记录;

引用计数的时候不考虑NEW区域的记录,只考虑OLDMIDDLE两个区域的记录引用计数增加,在替换记录的时候从OLD区域选择引用计数最少的那个记录进行替换。

 

(3)       LRU/2:对于LRU的改进,计算第二次到最后一次被访问总的LRU,将老的记录淘汰。

(4)       SLRU:

CACHE被分为两个部分:非保护区域和保护区域。每个区域的记录都按照最近使用频度由高到低排序,高端叫做MRU,低端叫做LRU。如果某个查询没有在CACHE找到,那么将这个查询放入非保护区域的MRU端;如果某个查询在CACHE命中,则把这个查询记录放到保护区的MRU端;如果保护区已满,则把记录从保护区放入非保护区的MRU,这样保护区的记录最少要被访问两次。淘汰的机制是将非保护区的LRU淘汰。

(5)       LandLord策略

将一个记录增加到CACHE的时候,给予这个记录一个值(DEADLINE,如果需要淘汰记录的时候,选择CACHE里面DEADLINE最小的那个淘汰,同时将CACHE里面其它所有记录减去这个被淘汰的记录的DEADLINE值,如果一个记录被命中,则将这个记录的DEADLINE放大到一定值。

 

(6)       TSLRUTopic based SLRU:SLRU策略相同,不过不是按照查询调整替换策略,而是按照查询所属主题进行调整。

(7)       TLRU: Topic based LRU

基本策略和LRU相同,区别在于保留查询的主题(TOPIC)信息,对于某个查询来说,不仅该主题的检索结果进入CACHE,而且原先在CACHE里面的相同主题的查询及其结果也调整时间,更新为最新进入CACHE。可以看作是主题LRU,而LRU是查询LRU

 

(8)       PDC (probability driven cache):针对用户的浏览行为建立概率模型,然后调整CACHE里面的记录优先级别,针对某个查询,将用户浏览数目比较多的文档在CACHE里面的级别提高。

(9)       预取策略

         所谓预取,就是系统预测用户在很短时间内的行为,然后将该行为涉及到的数据预先存储在CACHE里面。存在不同的预取策略,比如预取策略:因为一般用户在查看完第一页检索结果后会翻看第二页结果,所以将该用户查询的第二页结果首先预取到CACHE里面,这样可以减少存取时间。

 

(10)   二级CACHE

有两级CACHE,一级是查询结果CACHE,保留了原始查询以及相关文件;第二级CACHE是倒排文档列表CACHE,也就是查询中某个单词在索引中的倒排列表信息,这个CACHE主要减少了磁盘I/O时间。替换策略采取LRU,结果证明该方法提高30%的性能。

 

(11)   三级CACHE

是对二级CACHE的一种改进策略,除了二级CACHE里面保留的两个CACHE,另外增加一个CACHE,这个CACHE记录了两个单词查询的倒排文档交集记录,这样一个是省去了磁盘I/O时间,另外一个减少了计算交集的操作,有效的减少了计算量。

 

 

三.CACHE方法性能分析与比较

(1)       LRU适合存储比较小的记录效果才好。

(2)       中等大小的CACHE能够满足很大一部分重复用户查询。(大约20%的查询能够在中等大小CACHE找到)

(3)       将时间因素和命中次数结合起来的缓存策略好于只考虑时间因素的策略。实验表明FBR/LRU2/SLUR性能总是好于LRU策略。

(4)       对于小CACHE来说,静态CACHE策略要好于动态CACHE策略,命中率要高些。

(5)       对于LRU来说,大CACHE的重复命中率大约占30%。

(6)       对于大CACHE来说,TLRU略微好于LRU,但是差别不太大。对于小CACHE,结论正好相反。

(7)       随着CACHE逐步增大,命中率逐渐增加,对于SLRU来说,其性能跟两个分区划分大小无关。

(8)       PDC的命中率高于LRU变形算法,大约有53%命中率,不过计算复杂度高。


http://blog.csdn.net/malefactor/article/details/1481364



Cache替换算法是影响代理缓存系统性能的一个重要因素,一个好的Cache替换算法可以产生较高的命中率。目前已经提出的算法可以划分为以下三类:


(1)传统替换算法及其直接演化,其代表算法有:①LRU(Least Recently Used)算法:将最近最少使用的内容替换出Cache;②LFU(Lease Frequently Used)算法:将访问次数最少的内容替换出Cache;③Pitkow/Recker[10]提出了一种替换算法:如果Cache中所有内容都是同一天被缓存的,则将最大的文档替换出Cache,否则按LRU算法进行替换。


(2)基于缓存内容关键特征的替换算法,其代表算法有:①Size[10]替换算法:将最大的内容替换出Cache;②LRU—MIN[11]替换算法:该算法力图使被替换的文档个数最少。设待缓存文档的大小为S,对Cache中缓存的大小至少是S的文档,根据LRU算法进行替换;如果没有大小至少为S的对象,则从大小至少为S/2的文档中按照LRU算法进行替换;③LRU—Threshold[11] 替换算法:和LRU算法一致,只是大小超过一定阈值的文档不能被缓存;④Lowest Lacency First[12]替换算法:将访问延迟最小的文档替换出Cache。


(3)基于代价的替换算法,该类算法使用一个代价函数对Cache中的对象进行评估,最后根据代价值的大小决定替换对象。其代表算法有:①Hybrid[12] 算法:算法对Cache中的每一个对象赋予一个效用函数,将效用最小的对象替换出Cache;②Lowest Relative Value[13] 算法:将效用值最低的对象替换出Cache;③Least Normalized Cost Replacement(LCNR)[14]算法:该算法使用一个关于文档访问频次、传输时间和大小的推理函数来确定替换文档;④Bolot等人 [15]提出了一种基于文档传输时间代价、大小、和上次访问时间的权重推理函数来确定文档替换;⑤Size—Adjust LRU(SLRU)[16] 算法:对缓存的对象按代价与大小的比率进行排序,并选取比率最小的对象进行替换。


总之,为了使Cache命中率最大化,围绕Cache替换算法已经开展了大量的工作,但是替换算法的性能很大程度上取决于WWW访问的特性,还没有哪一种替换算法能够对所有Web访问模式都优于其它算法。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值