最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

LRU在MySQL缓存池的实现_MySQL

来源:动视网 责编:小采 时间:2020-11-09 19:10:37
文档

LRU在MySQL缓存池的实现_MySQL

LRU在MySQL缓存池的实现_MySQL:MySQL的InnoDB引擎设置有索引及数据缓存池,其中用到的LRU算法来维持缓存的命中率这里用到了顺序表list来作为缓冲池,每个数据节点称为block该算法采用“中点插入法”:当插入一个新block时,移除表尾最近最少使用的block,在中点插入新blo
推荐度:
导读LRU在MySQL缓存池的实现_MySQL:MySQL的InnoDB引擎设置有索引及数据缓存池,其中用到的LRU算法来维持缓存的命中率这里用到了顺序表list来作为缓冲池,每个数据节点称为block该算法采用“中点插入法”:当插入一个新block时,移除表尾最近最少使用的block,在中点插入新blo


MySQL的InnoDB引擎设置有索引及数据缓存池,其中用到的LRU算法来维持缓存的命中率

这里用到了顺序表list来作为缓冲池,每个数据节点称为block

该算法采用“中点插入法”:当插入一个新block时,移除表尾最近最少使用的block,在中点插入新block。

这个中点将链表分为两部分:

1.靠近表头的一部分,为young区,这里的block是最近使用的节点

2.靠近表尾的一部分,为old区,这里的block是最近少使用的

该算法通过链表中的block的使用热度来维持各block的位置,其中old区的block为链表满的时候移除的候选区

具体算法如下:

1.链表的3/8被设置为old区

2.中点不是链表的中间点,而是old区的表头节点,即old区与young区的相邻的那个节点

3.当读取的数据不在缓冲池里的时候,读取到的block需要插入到链表中,插入点为中点,但是插入的新节点为old区的节点,如果此时old区满了得话,移除表尾的block(LRU节点)

4.当读取old区的block时,该节点将变成“young”节点:此节点移动到young区的表头(young区的头部那里)

5.在数据库操作中,被访问的节点将移除到young的表头,这样一来,在young区中的未被访问的节点将逐渐往表尾移动,当移动过中点,将变为old区的节点。而old区的节点若被访问到将变为young节点移动到表头,而old区中的为被访问的节点依旧往表尾移动,当表满时,表尾那个block将会被淘汰掉

这里不涉及到具体代码实现,只是简单讲了下原理,待实现出来后再贴上来

转载请注明出处:http://www.cnblogs.com/iamsupercp/p/3682659.html 谢谢合作

文档

LRU在MySQL缓存池的实现_MySQL

LRU在MySQL缓存池的实现_MySQL:MySQL的InnoDB引擎设置有索引及数据缓存池,其中用到的LRU算法来维持缓存的命中率这里用到了顺序表list来作为缓冲池,每个数据节点称为block该算法采用“中点插入法”:当插入一个新block时,移除表尾最近最少使用的block,在中点插入新blo
推荐度:
标签: 实现 mysql 缓冲池
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top