网站大量收购独家精品文档,联系QQ:2885784924

从0开始带你成为MySQL实战高手19 MySQL是如何将LRU链表的使用性能优化到极致的.pdfVIP

从0开始带你成为MySQL实战高手19 MySQL是如何将LRU链表的使用性能优化到极致的.pdf

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

图文19MySQL是如何将LRU链表的使用性能优化到极致的?手机观看

535人次阅读2020-02-1309:19:14

详情评论

MySQL是如何将LRU链表的使用性能优化到极致的?

如何提问:每篇文章都有评论区,大家可以尽情留言提问,我会逐一答疑

如何加群:购买狸猫技术窝专栏的小伙伴都可以加入狸猫技术交流群,一个非常纯粹的技术交流的地方

具体加群方式,请参见目录菜单下的文档:《MySQL专栏付费用户如何加群》(购买后可见)

1、昨日第一个思考题的解答

昨天第一个思考题,我们是让大家思考一下,在LRU链表的冷数据区域中的都是什么样的数据呢?

其实大家脑筋一转就知道了,大部分应该都是预读加载进来的缓存页,加载进来1s之后都没人访问的,然后包括全表

扫描或者一些大的查询语句,加载一堆数据到缓存页,结果都是1s之内访问了一下,后续就不再访问这些表的数据

了。

类似这些数据,统统都会放在冷数据区域里。

2、昨日第二个思考题的解答

接着我们来说一下昨日第二个思考题的解答,昨天第二个思考题是让大家想了一下,对于我们开发的Java系统,如果

在Redis里存放了很多缓存数据,那么此时会不会有类似冷热数据的问题?应该如何优化和解决呢?

答案是:那必然是存在一些问题的。

常见的一个场景就是电商系统里的商品缓存数据,假设你有1亿个商品,然后只要查询商品的时候发现商品不在缓存

里,就给他放到缓存里去,你要这么搞的话,必然导致大量的不怎么经常访问的商品会被放在Redis缓存里!

经常被访问的商品其实就是热数据,不经常被访问的商品其实就是冷数据,我们应该尽量让Redis里放的都是经常访问

的热数据,而不是大量的冷数据。因为你放一大堆不怎么经常访问的商品在Redis里,那么他占用了很多内存,而且后

续还不怎么会访问到他们!

所以我们在设计缓存机制的时候,经常会考虑热数据的缓存预加载

也就是说,每天统计出来哪些商品被访问的次数最多,然后晚上的时候,系统启动一个定时作业,把这些热门商品的

数据,预加载到Redis里。那么第二天是不是对热门商品的访问就自然会优先走Redis缓存了?

3、LRU链表的热数据区域是如何进行优化的?

接着我们来看看LRU链表的热数据区域的一个性能优化的点,就是说,在热数据区域中,如果你访问了一个缓存页,

是不是应该要把他立马移动到热数据区域的链表头部去?

我们看下面的图示。

但是你要知道,热数据区域里的缓存页可能是经常被访问的,所以这么频繁的进行移动是不是性能也并不是太好?也

没这个必要。

所以说,LRU链表的热数据区域的访问规则被优化了一下,即你只有在热数据区域的后3/4部分的缓存页被访问了,才

会给你移动到链表头部去。

如果你是热数据区域的前面1/4的缓存页被访问,他是不会移动到链表头部去的。

举个例子,假设热数据区域的链表里有100个缓存页,那么排在前面的25个缓存页,他即使被访问了,也不会移动到

链表头部去的。但是对于排在后面的75个缓存页,他只要被访问,就会移动到链表头部去。

这样的话,他就可以尽可能的减少链表中的节点移动了。

4、一个脑筋急转弯的思考题

今天给大家出一个脑筋急转弯的小思考题,大家看了以后都可以在评论区里回答一下,如果回答错误的同学,那真的

得接受一点惩罚了!

这个问题就是:如果一个缓存页在冷数据区域的尾巴上,已经超过1s了,此时这个缓存页被访问了一下,那么他此时

会移动到冷数据区域的链表头部吗?注意,是冷数据区域的链表头部!

End

专栏版权归公众号狸猫技术窝所有

未经许可不得传播,如有侵权将追究法律责任

狸猫技术窝精品专栏及课程推荐:

《从零开始带你成为消息中间件实战高手》

《21天互联网Java进阶面试训练营》(分布式篇)

《互联网Java工程师面试突击》(第1季)

《互联网Java工程师面试突击》(第3季)

《从零开始带你成为JVM实战高手》

Copyright©2015-2020深圳小鹅网络技术有限公司AllRigh

您可能关注的文档

文档评论(0)

奎奎 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档