舞阳网站建设,网上做娱乐广告的网站,一家做公司评估的网站,深圳市宝安区中医院一、innodb的read-ahead是什么#xff1a; 所谓的read-ahead就是innodb根据你现在访问的数据#xff0c;推测出你接下来可能要访问的数据#xff0c;并把它们(可能要访问的数据)读入 内存。 二、read-ahead是怎么做到的#xff1a; 1、总的来说read-ahead利用的是程序的局部…一、innodb的read-ahead是什么 所谓的read-ahead就是innodb根据你现在访问的数据推测出你接下来可能要访问的数据并把它们(可能要访问的数据)读入 内存。 二、read-ahead是怎么做到的 1、总的来说read-ahead利用的是程序的局部性原理在innodb的数据文件中是用页面来管理的而每64个页面组成一个Extend 如果一个Extend的大多数据页面都被访问了那么innodb就认为Extend中的其它页面被访问的概率也非常大于是就可能所 Extend中的其它页面与一并调入内存了。 2、由于这样做可以把多次IO请求合并成一次并且可能把多次IO的随机读变成线性读这样就能更高效的利用磁盘的性能。 三、read-ahead可能会带来的问题 记得之前听别人说过“饭是个好东西但是吃多了也容易死人”read-ahead是个好东西关键在于度比如说明明只用到 了Extend中的一个页面但是把整个Extend的64个页面调入内存这样就会有问题了。 四、怎么把握这个度 1、我们可以设定当一个Extend中的多少个页面被访问了的时候就把Extend的其它页面也调入内存设定这个阈值的参数就是 innodb_read_ahead_threshold。 2、如果把innodb_read_ahead_threshold设置成58意思就是说当一个Extend中的58个页面都被访问了之后就把余下的6 个页面也调入内存。 3、由上面的介绍可知read-ahead可能带来性能提升也可能带来性能问题mysql还提供了一个一刀切的办法那就是关闭 read-ahead这个功能可以把innodb_read_ahead_threshold设置成0 ---- 交流学习 -----