我正在尝试使用InnoDB存储引擎优化运行MySQL的应用程序。
在实时环境中运行innotop
时,我得到以下输出:
When Load QPS Slow QCacheHit KCacheHit BpsIn BpsOut
Now 0.00 87.80 0 41.21% 100.00% 11.51k 836.42k
Total 0.00 105.50 190 15.04% 99.34% 13.23k 692.85k
When
,Load
,QPS
和Slow
不言自明。
但是QCacheHit
,KCacheHit
,BpsIn
和BpsOut
呢?一般来说,那些被认为是“好”的价值观,我应该何时开始担心?
答案 0 :(得分:14)
比率无用。认真。只是忽略它们。 http://www.mysqlperformanceblog.com/2010/02/28/why-you-should-ignore-mysqls-key-cache-hit-ratio/
是的,我是innotop的作者。我把这些功能放进去,所以人们会不再问我。
来自文章:
摘要
本文的主要观点:
- 作为绩效分析指标,计数器比率毫无意义 因为它们是a)b)计数器的比率。
- 您需要考虑绝对量值,而不是比率。
- 进行性能分析时,您需要 测量经过的时间,而不仅仅是某些事情的次数 发生的情况。
- 缺少时间信息,如果您信任缓存 创造者并假设未命中比命中更昂贵,那么你 关心缓存未命中,而不是缓存命中。
- 不保证Key_read是随机物理I / O,但它 可能。将Key_reads /正常运行时间收集超过10秒或60秒 间隔并将结果与IO系统的功能进行比较。
- MySQL没有很好的科学选择工具 key_buffer_size设置,但有许多不科学的方法 这比基于比率的调整要好。
- 反制比率对所有事情都很糟糕,而不仅仅是MyISAM调整。
我对这些观点有一些激烈的争论,所以我没想到 以上通过没有争议。但实际上,是时候停下来了 关于反制比率的坏建议。我们越早做到这一点, 我们能越早开始做更好的事情。
答案 1 :(得分:2)
QCacheHit
是query cache被击中的时间百分比。 KCacheHit
是innodb buffer pool被点击的时间百分比(类似于key buffer)。 BpsIn
是进入服务器的字节数,BpsOut
是字节数。
QCacheHit
应该相对较高。你的费率似乎很低。 KCacheHit
也应该相对较高,而且你状态良好。
BpsIn/Out
并不重要。