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查看),造成文件描述符不足,從而造成性能不穩定或者連接失敗。

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

發現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略大。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM