程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL性能優化之table_cache配置參數淺析

MySQL性能優化之table_cache配置參數淺析

編輯:MySQL綜合教程

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;
命令將會清空當前所有緩存的表。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved