key mysql_调整MySQL中的key_reads

我们正在尝试调整我们正在忙碌的MySQL数据库(Myisam,5.1.73).

我们调查了Key_reads:

$mysqladmin ext -ri10 | grep Key_reads

在正常负载期间,我们有以下值(平均值):

Key_reads 40 (per 10 seconds)

Key_read_requests 350000 (per 10 seconds)

但有时候,在几十分钟内,我们会看到如下值:

Key_reads 1000 (per 10 seconds)

Key_read_requests 350000 (per 10 seconds)

我们将Key_buffer_size增加到512(比我们的索引总数大).我们还有16Gb的可用内存.

Key_reads应该是低还是空?

这些peacks是正常的还是可以避免的?

解决方法:

定义

首先,您需要知道这些状态变量的含义

> Key_read_requests:从MyISAM密钥缓存中读取密钥块的请求数.

> Key_reads:从磁盘到MyISAM密钥缓存的密钥块的物理读取次数.如果Key_reads很大,那么你的key_buffer_size值可能太小了.可以将高速缓存未命中率计算为Key_reads / Key_read_requests.

意见

从MyISAM密钥缓冲区读取的350000个磁盘中的40个读取磁盘的缓存命中率为100 X(1.0 – (40.0 / 350000.0))= 99.98857%.

从MyISAM密钥缓冲区读取的350000个磁盘中的1000个读取的缓存命中率为100 X(1.0 – (1000.0 / 350000.0))= 99.7143%.

>我之前讨论过性能调优的这个方面:How to improve MySQL Server Performance..??

推测

当您的Key_reads开始增加时,它只是表示您读取了新数据,并且访问的索引页面已被新加载到MyISAM密钥缓存中.这样的Key_reads是不可避免的.一旦该尖峰停止,则您的读取请求已大幅减少,或者后续查询现在使用您上次读入MyISAM密钥缓存的密钥块.高键读取表明您的查询经常从磁盘读取索引块,将它们加载到密钥缓存中,从MyISAM密钥缓存中删除索引块,后续查询不访问它们.

结论

由于您的缓存命中率(> 99.00%)非常出色,我会说您很好,因为您的Key_reads非常低并且不常见.

标签:mysql,myisam,tuning

来源: https://codeday.me/bug/20190806/1601520.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值