MySQL 5.6下table_open_cache參數合理配置詳解

table_open_cache指定表高速緩存的大小。每當MySQL訪問一個表時,若是在表緩衝區中還有空間,該表就被打開並放入其中,這樣能夠更快地訪問表內容。
經過檢查峯值時間的狀態值Open_tables和Opened_tables,能夠決定是否須要增長table_open_cache的值。
若是你發現open_tables等於table_open_cache,而且opened_tables在不斷增加,那麼你就須要增長table_open_cache的值了(上述狀態值可經過SHOW GLOBAL STATUS LIKE ‘Open%tables’得到)。
注意,不能盲目地把table_open_cache設置成很大的值,設置太大超過了shell的文件描述符(經過ulimit -n查看),形成文件描述符不足,從而形成性能不穩定或者鏈接失敗。mysql

測試環境:騰訊雲CDB,內存4000M,在控制檯查看到table_open_cache=512,監測table_open_cache設置是否合理,是否須要優化。sql

發現open_tables等於table_open_cache,都是512,說明mysql正在將緩存的表釋放以容納新的表,此時可能須要加大table_open_cache的值,4G內存的機器,建議設置爲2048
比較適合的值:
Open_tables / Opened_tables >= 0.85
Open_tables / table_open_cache <= 0.95
若是對此參數的把握不是很準,有個很保守的設置建議:把MySQL數據庫放在生產環境中試運行一段時間,而後把參數的值調整得比Opened_tables的數值大一些,而且保證在比較高負載的極端條件下依然比Opened_tables略大。shell

相關文章
相關標籤/搜索