InnoDB LRU

InnoDB将LRU链表分为两个部分,也就是所谓的`old区` 和 `young区`。

`young区`在链表的头部,存放经常被访问的数据页,可以理解为热数据

`old区`在链表的尾部,存放不经常被访问的数据页,可以理解为冷数据

这两个部分的交汇处称为`midpoint`, 怎么知道两个区的比例呢?

```

show variables like 'innodb_old_blocks_pct';

```

InnoDB LRU 链表

数据何时在old区,何时进入young 区?

数据页第一次被加载进Buffer Pool时在`old区`的头部。当这个数据页在`old区`,再次被访问到,会做如下的判断:

如果这个数据页在LRU链表中的`old区` 存在的时间超过了1秒,就把它移动到`young区`。

这个存在时间由`innodb_old_blocks_time`控制。

你可能感兴趣的:(InnoDB LRU)