tyl*_*erl 54 mysql performance reporting
MySQL Workbench报告了一个与服务器健康状况相关的名为"密钥效率"的值.这意味着什么?它的含义是什么?

来自MySQL.com,"关键效率"是:
......表明
key_read_requests实际数量的指示key_reads.
好的,那是什么意思.它告诉我有关我应该如何调整服务器的信息?
Mar*_*tin 81
"关键效率"表示您从MySQL内存中保存的索引缓存中获得了多少价值.如果您的密钥效率很高,那么MySQL通常会在内存空间中执行密钥查找,这比从磁盘检索相关索引块要快得多.
提高密钥效率的方法是将更多的系统内存专用于MySQL的索引缓存.如何执行此操作取决于您使用的存储引擎.对于MyISAM,增加key-buffer-size的值.对于InnoDB,增加innodb-buffer-pool-size的值.
但是,正如Michael Eakins指出的那样,操作系统还拥有最近访问过的磁盘块缓存.操作系统可用的内存越多,它可以缓存的磁盘块就越多.此外,磁盘驱动器本身(以及某些情况下的磁盘控制器)也有缓存 - 这也可以加速从磁盘检索数据.层次结构有点像这样:
在实践中,除非您的系统非常繁忙,否则1和2之间的差异几乎不会引起注意.此外,不太可能(除非您的系统具有比磁盘控制器少的备用RAM),方案3将发挥作用.
我使用的服务器MyISAM表具有相对较小的索引缓存(512MB),但是大规模系统内存(64GB)并且发现很难证明增加索引缓存大小的价值.我想这取决于你的服务器上发生了什么.如果您运行的只是一个MySQL数据库,那么OS缓存很可能非常有效.但是,如果您在同一台服务器上运行其他作业并且这些作业使用大量内存/磁盘访问,则这些可能会导致有价值的缓存索引块导致MySQL更频繁地访问磁盘.
一个有趣的练习(如果你有时间)是修补你的系统,使它运行得更慢.在大型表上运行标准工作负载,减少MySQL缓冲区,直到影响变得明显.通过文件系统(cat large-file>/dev/null)抽取大量(大于RAM)的无关数据来刷新文件系统缓存.在查询运行时观察iostat.
"关键效率"并不能衡量您的密钥有多好.精心设计的按键对性能的影响远远大于"关键效率".遗憾的是,MySQL并没有太多帮助你.
Key_read_requests是从缓存中读取密钥块的请求数.而key_reads是来自磁盘的密钥块的物理读取次数.所以这两个变量可以独立增加.(http://bugs.mysql.com/bug.php?id=28384)
这仍然像泥一样清晰.
接下来的解释:
Key_reads的部分有效使用
有部分合理的理由来检查Key_reads,假设我们关心物理读取数发生的,因为我们知道,盘相对于计算机的其它部分非常缓慢的.在这里,我回到上面所谓的"大多数事实",因为Key_reads实际上根本不是物理磁盘读取.如果请求的数据块不在操作系统的缓存中,然后KEY_READ是读取到的光盘 - 但如果它被缓存,那么它只是一个系统调用.但是,让我们做出第一个难以证明的假设:
难以证明的假设#1:Key_read可能对应于物理磁盘读取.如果我们认为这个假设是正确的,那么我们还有什么其他理由来关心Key_reads?这种假设导致"缓存未命中显着慢于缓存命中",这是有道理的.如果将Key_read作为Key_read_request执行速度同样快,那么密钥缓冲区的用途是什么?让我们相信MyISAM的创建者,因为他们设计的缓存命中速度比错过快.(http://planet.mysql.com/entry/?id=23679)
| 归档时间: |
|
| 查看次数: |
51543 次 |
| 最近记录: |