首页 > 数据库技术 > 详细

mysql的缓存

时间:2019-09-21 14:37:33      阅读:76      评论:0      收藏:0      [点我收藏+]

mysql的缓存

每次访问一个页的记录需要把整个页加载进一个叫bufferpool的内存区中,即使访问结束页还处于bufferpool中,再次访问该页可以直接从内存中读。

用哈希表来判断页到底缓存了还是没有缓存(用表空间号和页号作为key)

页存入bufferpool中涉及到三个特殊的链表:

1、free链表:可用的内存块。

2、flush链表:如果修改了某个内存中的页使数据与磁盘不一致了这个页称为脏页,脏页组成flush链表,有专门的线程负责刷新脏页到链表。

3、特殊的LRU链表,用来完成缓存功能,mysql还做了许多其他的优化,将LRU表分为young区和old区,访问间隔短不会将其移动到young区,这都是为了防止预读和全表查询刷新LRU链表,只有页处于young区的后1/4时才能被移动等优化手段。

mysql的缓存

原文:https://www.cnblogs.com/shizhuoping/p/11562333.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!