mysql 并发 参数_mysql参数优化(解决大并发,高IO)

innodb_buffer_pool_size 参数用来设置 Innodb 最主要的 Buffer(Innodb_Buffer_Pool)的大小,也 就是缓存用户表及索引数据的最主要缓存空间,对 Innodb 整体性能影响也最大

show status like  'Innodb_buffer_pool_%';

+-----------------------------------+-------+

| Variable_name    | Value |

+-----------------------------------+-------+

| Innodb_buffer_pool_pages_data     | 70    |

| Innodb_buffer_pool_pages_dirty    | 0    |

| Innodb_buffer_pool_pages_flushed | 0    |

| Innodb_buffer_pool_pages_free    | 1978    |

| Innodb_buffer_pool_pages_latched | 0    |

| Innodb_buffer_pool_pages_misc     | 0    |

| Innodb_buffer_pool_pages_total    | 2048    |

| Innodb_buffer_pool_read_ahead_rnd  | 1    |

| Innodb_buffer_pool_read_ahead_seq  | 0    |

| Innodb_buffer_pool_read_requests | 329    |

| Innodb_buffer_pool_reads    | 19    |

| Innodb_buffer_pool_wait_free    | 0    |

| Innodb_buffer_pool_write_requests | 0    |

+-----------------------------------+-------+

从上面的值我们可以看出总共 2048

pages,还有 1978 是 Free 状态的仅仅只有 70 个 page 有数据, read 请求 329 次,其中有 19

次所请求的数据在 buffer  pool 中没有,也就是说有 19 次是通过读取物理 磁盘来读取数据的,所以很容易也就得出了 Innodb

Buffer  Pool 的 Read 命中率大概在为:(329 - 19)/ 329  * 100%  =

94.22%。

当然,通过上面的数据,我们还可以分析出 write 命中率,可以得到发生了多少次 read_ahead_rnd,多少次 read_ahead_seq,发生过多少次 latch,多少次因为 Buffer 空间大小不足而产 生 wait_free 等等。

单从这里的数据来看,我们设置的 Buffer  Pool 过大,仅仅使用 70  / 2048  * 100%  = 3.4%。

在 Innodb Buffer  Pool

中,还有一个非常重要的概念,叫做“预读”。一般来说,预读概念主要是

在一些高端存储上面才会有,简单来说就是通过分析数据请求的特点来自动判断出客户在请求当前数据

块之后可能会继续请求的数据快。通过该自动判断之后,存储引擎可能就会一次将当前请求的数据库和

后面可能请求的下一个(或者几个)数据库一次全部读出,以期望通过这种方式减少磁盘 IO 次数提高 IO

性能。在上面列出的状态参数中就有两个专门针对预读:

Innodb_buffer_pool_read_ahead_rnd,记录进行随机读的时候产生的预读次数; Innodb_buffer_pool_read_ahead_seq,记录连续读的时候产生的预读次数;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值