這篇文章主要介紹了mysql性能優化之table_性能優化配置參數淺析,本文介紹了它的性能優化機制、參數優化及清空緩存的命令等,需要的朋友可以參考下
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?<p>如果對此參數的把握不是很準,VPS管理百科給出一個很保守的設置建議:把<a href="http://www.php.cn/code/9287.html" target="_blank">性能優化</a>放在生產環境中試運行一段時間,然后把參數的值調整得比Opened_tables的數值大一些,并且保證在比較高負載的極端條件下依然比Opened_tables略大。</p><p><strong>清空緩存</strong></p><p>執行</p><pre class="brush:php;toolbar:false">mysql?>?flush?tables;
命令將會清空當前所有緩存的表。