free链表
由来:记录哪些区域是空闲的,这样缓存的时候,直接找到位置存储
flush链表
由来:更新数据之后,内存中的数据被改掉,那同步磁盘线程 同步数据需要知道哪些被修改了(脏页),因此,需要有一个链表记录哪些数据被修改了
lru链表
由来:bufferPool进行缓存,如果内存不够了,需要进行<b>清理缓存</b>,哪些缓存可以清理,lru链表记录
组成:热数据区域(5/8)+冷数据区域(3/8),中间的点叫midpoint
运作方式:数据页进入bufferPool中,首先进入冷数据区域的头部;<br>如果再次被访问,则判断,两次访问时间间隔,如果超过1秒,则进入热数据区域头部
为什么是1秒:就是说,加入缓存的数据页扫描的时候,一行一行的扫描,时间不会超过1秒
理由:<br>1、防止全表扫描导致缓存数据被大量清理<br>2、数据预读页(预读机制)可能不是热点数据,如果不会被再次访问,慢慢的就会被清理