mysql table_cache和key_buffer_size

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加大後碰到文件描述符不夠用的問題,數據庫


一想到這裏,部分兄弟可能會用ulimit -n 做出調整,可是這個調整實際是不對的,換個終端後,這個值又會回到原始值,因此最好用sysctl或者修改/etc/sysctl.conf文件,同時還 要在配置文件中把open_files_limit這個參數增大,


   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,這從結果證實了他們說這話的正確性,咱們不妨用之緩存

相關文章
相關標籤/搜索