2012-03-27 89 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

相關問題