首頁  >  文章  >  資料庫  >  如何使用table_cache配置參數對Mysql進行效能最佳化

如何使用table_cache配置參數對Mysql進行效能最佳化

伊谢尔伦
伊谢尔伦原創
2017-05-30 14:44:231470瀏覽

table_cache是​​一個非常重要的MySQL效能參數,它在5.1.3之後的版本叫做table_open_cache。 table_cache主要用來設定table高速緩存的數量。由於每個客戶端連線都會至少存取一個表,因此此參數的值與max_connections有關。

快取機制

當某一連線存取一個表時,MySQL會檢查目前已快取表的數量。如果該表已經在快取中打開,則會直接存取快取中的表已加快查詢速度;如果該表未被緩存,則會將目前的表新增至快取並進行查詢。

在執行快取操作之前,table_cache用來限制快取表的最大數目:如果目前已經快取的表未達到table_cache,則會加入新表;若已經達到此值,MySQL將根據快取表的最後查詢時間、查詢率等規則釋放之前的快取。

參數調優

一般來說,可以在phpmyadmin中查看Open_tables與Opened_tables的值,也可以執行

mysql> show global status like 'open%_tables';

查看目前的open_tables情況,如圖:

來查看這兩個參數的值。其中Open_tables是目前正在開啟表格的數量,Opened_tables是所有已經開啟表格的數量。

如果Open_tables的值已經接近table_cache的值,且Opened_tables還在不斷變大,則表示mysql正在釋放快取的表以容納新的表,此時可能需要加大table_cache的值。對於大多數情況,

比較適合的值:

Open_tables / Opened_tables >= 0.85
Open_tables / table_cache <= 0.95

如果對此參數的掌握不是很準,VPS管理百科給一個很保守的設定建議:把MySQL資料庫放在生產環境中試運行一段時間,然後把參數的值調整得比Opened_tables的數值大一些,並且保證在比較高負載的極端條件下依然比Opened_tables略大。

清空快取

執行

mysql > flush tables;

指令將會清空目前所有快取的表。

以上是如何使用table_cache配置參數對Mysql進行效能最佳化的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn