请您解释以下MySQL指标的含义:
表缓存命中率= open_tables / opened_tables。
据我所知,open_tables是已打开表的当前值,而open_tables是一个计数器,这两个状态变量之间没有任何关联。
答案 0 :(得分: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需要时间来检查大量缓存的表描述符,以确定下一个要关闭的表。