InnoDB将LRU链表分为两个部分,也就是所谓的`old区` 和 `young区`。
`young区`在链表的头部,存放经常被访问的数据页,可以理解为热数据
`old区`在链表的尾部,存放不经常被访问的数据页,可以理解为冷数据
这两个部分的交汇处称为`midpoint`, 怎么知道两个区的比例呢?
```
show variables like 'innodb_old_blocks_pct';
```
数据何时在old区,何时进入young 区?
数据页第一次被加载进Buffer Pool时在`old区`的头部。当这个数据页在`old区`,再次被访问到,会做如下的判断:
如果这个数据页在LRU链表中的`old区` 存在的时间超过了1秒,就把它移动到`young区`。
这个存在时间由`innodb_old_blocks_time`控制。