博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql-5.7中的innodb_buffer_pool_prefetching(read-ahead)详解
阅读量:6717 次
发布时间:2019-06-25

本文共 797 字,大约阅读时间需要 2 分钟。

一、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

 

----

交流学习

 

 

 

 

-----

转载地址:http://crkmo.baihongyu.com/

你可能感兴趣的文章
21、ASP.NET MVC入门到精通——ASP.NET MVC4优化
查看>>
Arm-kernel 内存收集【转】
查看>>
HTML5之Canvas标签简要学习
查看>>
du熊学斐波那契I
查看>>
Silverlight1.1架构图
查看>>
js实现获取值传到input里边
查看>>
【原+转】用CMake代替makefile进行跨平台交叉编译
查看>>
swift3.0:CoreData的使用
查看>>
Silverlight实用窍门系列:3.Silverlight鼠标动态绘制矩形【实例源码下载】
查看>>
postmaster.c 中的 ListenAddresses
查看>>
托付和事件的使用
查看>>
关于Java的转义字符
查看>>
测试管理工具QC使用指南--QC用户
查看>>
使用FDO API连接到各种数据源
查看>>
CentOS 6.5下Redis安装记录
查看>>
Activiti-5.3工作流引擎-源码解析(流程文档解析)
查看>>
python3中的迭代器与生成器
查看>>
开源Flex Air版免费激情美女视频聊天室,免费网络远程视频会议系统((Flex,Fms3联合打造))...
查看>>
在虚拟机中搭建SQLITE环境,并测试其是否安装成
查看>>
jsp页面传递参数是如何与javabean进行关联的
查看>>