mysql-5.7中的innodb_buffer_pool_prefetching(read-ahead)详解
2017-08-19 15:18
555 查看
一、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
----
交流学习
-----
所谓的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
----
交流学习
-----
相关文章推荐
- 14.6.3.4 Configuring InnoDB Buffer Pool Prefetching (Read-Ahead) 配置InnoDB Buffer pool 预取
- 14.6.3.4 Configuring InnoDB Buffer Pool Prefetching (Read-Ahead) 配置InnoDB Buffer pool 预取
- mysql-5.7 监控innodb buffer pool load 的进度 详解
- 14.4.3.4 Configuring InnoDB Buffer Pool Prefetching (Read-Ahead) 配置InnoDB Buffer pool 预读
- 14.4.3.4 Configuring InnoDB Buffer Pool Prefetching (Read-Ahead) 配置InnoDB Buffer pool 预读
- 14.4.3.4 Configuring InnoDB Buffer Pool Prefetching (Read-Ahead) 配置InnoDB Buffer pool 预读
- [MySQL参数取值] Status取值ERROR 1193 (HY000): Unknown system variable 'Innodb_buffer_pool_read_requests'
- mysql-5.7 saving and restore buffer pool state 详解
- Mysql Innodb_buffer_pool状态参数详解
- MySQL5.7新特性:innodb-buffer-pool-size新特性
- mysql-5.7 innodb change buffer 详解
- [MySQL参数取值] Status取值ERROR 1193 (HY000): Unknown system variable 'Innodb_buffer_pool_read_requests'
- MySQL调优之innodb_buffer_pool_size大小设置
- Mysql Innodb 引擎优化 参数(innodb_buffer_pool_size)
- 提升mysql性能的关键参数之innodb_buffer_pool_size、innodb_buffer_pool_instances
- MySQL 效能優化之參數配置修改(innodb_buffer_pool_size)
- mysql-5.7 innodb_buffer_pool刷新机制详解
- [转]MySQL innodb buffer pool
- MySQL innodb_buffer_pool_size参数
- MYSQL IO innodb-buffer-pool