1 预读带来的一个巨大问题
首先带来的隐患问题就是mysql的预读机制,这个机制的意思就是在我读某一个数据页的时候,他可能会连带着把这个数据页相邻的数据页也加载到缓存中。
这样会导致一个问题,就是两个可能用不到几次的数据会被加载到LRU的前面。
2 哪些情况会触发mysql的预读机制
1,有一个参数是innodb_read_ahead_threshold,他的默认值为56,意思是如果顺序的访问了一个区里的多个数据页,访问的数据页的数量超过了这个阈值,此时就会触发预读机制,把下一个相邻区中的所有数据页都加载到缓存里去
2, 连续访问数据页超过13个,相邻的,而且访问频率比较高的情况,就会触发预读机制,不过这个开关一般都是off的。所以一般来说都是第一种情况。
3 全表扫描带来的影响
如果对于数据没有命中索引,而全表扫描,比如没有加where条件,就会把所有数据都加到缓存页里去,把很多经常用的缓存也直接顶到了最后面,这时候如果有其他新的数据页进来,就会淘汰之前经常用的缓存页。
