table_cache指示表高速緩存的大小。當Mysql訪問一個表時,若是在Mysql表緩衝區中還有空間,那麼這個表就被打開並放入表緩衝區,這樣 作的好處是能夠更快速地訪問表中的內容。通常來講,能夠經過查看數據庫運行峯值時間的狀態值Open_tables和Opened_tables,用以判 斷是否須要增長table_cache的值,即若是open_tables接近table_cache的時候,而且Opened_tables這個值在逐 步增長,那就要考慮增長這個值的大小了。mysql
在mysql默認安裝狀況下,table_cache的值在2G內存如下的機器中的值默認時 256到512,若是機器有4G內存,則默認這個值是2048,但這決意味着機器內存越大,這個值應該越大,由於table_cache加大後,使得 mysql對SQL響應的速度更快了,不可避免的會產生更多的死鎖(dead lock),這樣反而使得數據庫整個一套操做慢了下來,嚴重影響性能。因此平時維護中仍是要根據庫的實際狀況去做出判斷,找到最適合你維護的庫的 table_cache值。sql
這裏還要說明一個問題,就是table_cache加大後碰到文件描述符不夠用的問題,數據庫
key_buffer_size這個參數,key_buffer_size表示索引緩衝區的大小,嚴格說是它決定了數據庫索引處理的速度,尤爲 是索引讀的速度。根據網絡一些高手寫的文章表示能夠檢查狀態值Key_read_requests和Key_reads,便可知道 key_buffer_size設置是否合理。比例key_reads / key_read_requests應該儘量的低,至少是1:100,1:1000更好,雖然我尚未找到理論的依據,可是,我在本身維護的幾臺實際運 行良好的庫作過的測試後代表,這個比值接近1:20000,這從結果證實了他們說這話的正確性,咱們不妨用之緩存