1 前面讲的LRU链表是比较简单的，在mysql中直接使用是会存在问题的
  比如以下情况
  
  (1) mysql 预读 
	参数：innodb_read_ahead_threshold(默认56)，如果顺序访问了一个区的多个数据页，超过设定值时，就会触发预读。把下一个 相邻区的数据加载到缓存页中去。
	参数：innodb_random_read_ahead(默认关闭)，如果顺序访问了一个区的多个数据页，超过13个连续的数据页，就会触发预读，把当前区中的其他数据页加载到缓存页中去。
（2）全表扫描
	全表扫描，把一张表的里的数据全加载到缓存页中去了。

上面两种情况都会把可能不怎么访问点的数据加载到LRU链表的头部，从而把真正高访问的数据挤到尾部去了。如果此时free空间不足了，那就将真正的热数据淘汰了

2 mysql实际使用的LRU链表是进行了冷热分离的，分为两部分。默认热链表部分占63%，冷链表部分占37%。

首先数据页第一次被加载到缓存的时候， 会被放在冷数据区域的链表头部，然后在加载到冷区一秒后 如果有被访问 那么才会移动到热区头部去。这样的话 预读或者全表进来的数据都不会对前面热区的数据造成影响，因为这些数据不会进入热区。
如果此时需要淘汰数据直接去冷区尾部淘汰就可以了。

mysql在热区数据的移动做了一个优化，只有在热区后3/4的数据被访问才会立即放到链表头部，前1/4部分是不会立即放到链表头部的，因为成本太大了，因为这部分的数据 都是被频繁访问的。


