MySQL配置內存使用之線程緩存和表緩存

線程緩存保存了和當前連接無關的線程,這些線程可以供新連接使用。當要求一個新的連接時,如果線程緩存中的連接能夠被使用時,新的連接就不會被創建,而使用線程緩存中的連接。當連接關閉時,又會將該線程放回到線程緩存中(前提是線程緩存中有可用的空間)。
 
參數thread_cache_size用於控制線程緩存的大小,默認值爲0,表示沒有線程緩存,這個參數爲動態參數可以隨時更改,如下:
  1. mysql> show variables like 'thread_cache_size'
  2. +-------------------+-------+ 
  3. | Variable_name     | Value | 
  4. +-------------------+-------+ 
  5. | thread_cache_size | 0     | 
  6. +-------------------+-------+ 

 

通過 Threads_cached 和 Threads_created  狀態變量來監控已緩存的線程數和已創建的線程數。當系統有大量的連接時,根據Threads_created或Threads_connected狀態變量的值來適當調整線程緩存的大小,以減少線程創建的開銷。

 

  1. --顯示和線程相關的狀態變量 
  2. mysql> show status like 'thread_%'
  3. +-------------------+-------+ 
  4. | Variable_name     | Value | 
  5. +-------------------+-------+ 
  6. | Threads_cached    | 0     |      --已緩存的線程數 
  7. | Threads_connected | 3     |   --已連接的線程數 
  8. | Threads_created   | 9     |      --已創建的線程數 
  9. | Threads_running   | 1     |     --正在運行的線程數 
  10. +-------------------+-------+ 

 

MySQL線程緩存原理與連接池原理相似。

 

表緩存由兩部分構成,表打開緩存與表定義緩存。
線程緩存和表緩存都不會使用太多的內存,儘管創建新連接與打開文件並不是昂貴的操作,但是在高併發情況下,開銷就會上升的很快,緩存線程和表能夠提高效率。
 
  1. --兩個表緩存參數 
  2. mysql> show variables like '%table%cache%'
  3. +------------------------+-------+ 
  4. | Variable_name          | Value | 
  5. +------------------------+-------+ 
  6. | table_definition_cache | 400   | 
  7. | table_open_cache       | 64    | 
  8. +------------------------+-------+ 
  9. rows in set (0.00 sec) 
  10.  
  11. --有關表緩存的狀態變量 
  12. mysql> show status like 'Open%table%'
  13. +--------------------------+-------+ 
  14. | Variable_name            | Value | 
  15. +--------------------------+-------+ 
  16. | Open_table_definitions   | 38    | 
  17. | Open_tables              | 31    | 
  18. | Opened_table_definitions | 0     | 
  19. | Opened_tables            | 0     | 
  20. +--------------------------+-------+ 
  21. rows in set (0.00 sec) 
 
如果Opened_tables 狀態變量的值很大或正在上升,就說明表緩存不夠大,需要增加table_open_cache的值;Opened_table_definitions狀態變量也同樣如此。
 
參考:高性能MySQL (第二版)
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章