博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转载]innodb 的预读
阅读量:5776 次
发布时间:2019-06-18

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

innodb在io的优化上有个比较重要的特性为预读,innodb以64个page为一个extent,那么innodb的预读是以page为单位还是以extent?

这样就进入了下面的话题:linear read-ahead和randomread-ahead;

为了区分这两种预读的方式,我们可以把linear预读放到以extent为单位,而random 预读放到以extent中的page为单位;

linear 预读着眼于将下一个extent提前读取到buffer pool中,

而random预读着眼于将当前extent中的剩余的page提前读取到buffer pool 中:

linear的预读方式有一个很重要的变量控制是否将下一个extent预读到buffer pool中::如果一个extent中的被顺序读取的page超过或者等于该参数变量的,innodb将会异步的将下一个extent读取到buffer pool中,比如该参数的值为30,那么当该extent中有30个pages 被 sequentially的读取,则会触发innodb linear预读,将下一个extent读到内存中;在没有该变量之前,当访问到extent的最后一个page的时候,innodb会决定是否将下一个extent放入到buffer pool中;

该参数可以动态的修改:

root@(none) 09:20:02>set global innodb_read_ahead_threshold=40;

Query OK, 0 rows affected (0.00 sec)

random的预读方式则是表示当同一个extent中的一些page在buffer pool中发现时,innodb会将该extent中的剩余page一并读到buffer pool中,由于random的预读方式给innodb code带来了一些不必要的复杂性,同时在性能也存在不稳定性,在5.5中已经将这种预读方式废弃。

在监控innodb的预读时候,我们可以通过show innodb status中的 Pages read ahead和evicted without access 两个值来观察预读的情况:

或者通过两个状态值:

Innodb_buffer_pool_read_ahead 和 Innodb_buffer_pool_read_ahead_evicted.

Innodb_buffer_pool_read_ahead:表示通过预读请求到buffer pool的pages;

Innodb_buffer_pool_read_ahead_evicted:表示由于请求到buffer pool中没有被访问,而驱逐出buffer pool的pages;

root@(none) 10:19:42>show global status like ‘%read_ahead%’;

+—————————————+———+

| Variable_name | Value |

+—————————————+———+

| Innodb_buffer_pool_read_ahead | 775378 |

| Innodb_buffer_pool_read_ahead_evicted | 1888537 |

而通过show innodb status得到的 Pages read ahead 和evicted without access 则表示每秒读入和读出的pages;

Pages read ahead 1.00/s, evicted without access 9.99/s.

ref:

转载于:https://www.cnblogs.com/conanwang/p/5823400.html

你可能感兴趣的文章
go-nsq 使用
查看>>
无善亦无恶
查看>>
SQLite 爬坑记录之无法设置自增约束
查看>>
ASP.NET 简单实现数字时钟
查看>>
如何突破职场瓶颈
查看>>
一个30岁男人的爱情婚姻思考
查看>>
PHP - 获取音频长度
查看>>
关于网易Ubuntu源的使用
查看>>
linux android sdk update
查看>>
Redis笔记3:Jedis连接自动释放
查看>>
cell侧滑显示多个按钮(Swift)
查看>>
Redis 2.8.9源码 - 字符串操作函数头整理,并注释作用和参数说明
查看>>
java里调用构造器会不会一定产生新对象
查看>>
Elasticsearch
查看>>
引用计数算法
查看>>
Java 复习 —— 守护线程以及线程监测工具
查看>>
MAVEN私服搭建
查看>>
x86/x86_64的一些基本概念
查看>>
给 Android 开发者的 RxJava 详解
查看>>
mac 下安装imagemagick和PHP扩展Rmagick
查看>>