2012-03-27 85 views
4

你能,请解释什么是下面的MySQL指标的含义是:MySQL表高速缓存的命中率

表缓存命中率= open_tables/opened_tables的。

据我所知open_tables是已打开表的当前值,opened_tables是一个计数器,这两个状态变量之间没有任何关联。

+0

你从哪里得到这个指标? – ajreal 2012-03-27 17:47:25

+0

这个指标在很多帖子和博客中都有提及,具体计算如下: https://github.com/rackerhacker/MySQLTuner-perl/blob/master/mysqltuner.pl – user1295689 2012-03-28 06:09:20

回答

3

open_tables是你现在打开的表的数量; opened_tables是自服务器启动以来的开表操作总数。

例如,如果您执行了100次表开放操作并现在打开25个表,则表缓存命中率为25/100 = 1/4。

原因是你试图测量你的表缓存是否足够大,但是打开的表与开放表的比例并不能给你全部的图片。阅读“MySQL如何打开并关闭页面”(http://dev.mysql.com/doc/refman/5.0/en/table-cache.html)以更好地理解这一点。

你想要做的就是查看打开的表随时间变化的值 - 如果系统忙时快速增长,则可能需要增加表缓存大小。但要小心使表缓存过大 - MySQL需要花时间检查大量缓存表描述符,以确定下一个要关闭的表。

+0

好的,但是逻辑是什么?通过将这两个当前值除以 – user1295689 2012-03-29 05:02:50

+0

@ user1295689,我已经更新了我的答案以解决您的其他问题。希望这可以帮助。 – 2012-03-29 09:22:16

相关问题