MySQL優化:使用show status查看MySQL服務器狀態信息

在網站開發過程當中,有些時候咱們須要瞭解MySQL的服務器狀態信息,譬如當前MySQL啓動後的運行時間,當前MySQL的客戶端會話鏈接數,當前MySQL服務器執行的慢查詢數,當前MySQL執行了多少SELECT語句、執行了多少UPDATE/DELETE/INSERT語句等統計信息,從而便於咱們根據當前MySQL服務器的運行狀態進行對應的調整或優化工做。緩存

在MySQL中,咱們可使用SHOW STATUS指令語句來查看MySQL服務器的狀態信息。下面,咱們以DOS命令窗口的形式鏈接MySQL,並執行show status;指令,咱們將看到以下顯示信息:服務器

執行show status指令顯示的部分結果執行show status指令顯示的部分結果post

當咱們執行show status語句時,MySQL將會列出多達300多條的狀態信息記錄,其中包括了供咱們查看了解的各類信息。不過,若是直接使用show status指令獲得300多條記錄,會讓咱們看得眼花繚亂,所以咱們但願可以「按需查看」一部分狀態信息。這個時候,咱們能夠在show status語句後加上對應的like子句。例如,咱們想要查看當前MySQL啓動後的運行時間,咱們能夠執行以下語句:性能

--查詢當前MySQL本次啓動後的運行統計時間 show status like 'uptime';

此時,咱們就能夠看到以下結果:優化

+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Uptime        | 5667  |
+---------------+-------+
1 row in set (0.00 sec)

一樣的,若是咱們要本次MySQL啓動後執行的SELECT語句的次數,咱們能夠執行以下語句:網站

show status like 'com_select';

對應輸出結果以下:spa

+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Com_select    | 1     |
+---------------+-------+
1 row in set (0.00 sec)

此外,與WHERE子句中的LIKE關鍵字相似,show status後的LIKE關鍵字也可使用'_'或'%'等通配符來進行模糊匹配。例如咱們能夠執行以下語句來查看MySQL服務器的線程信息:線程

show status like 'Thread_%';

對應輸出結果以下:code

+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| Threads_cached    | 0     |
| Threads_connected | 1     |
| Threads_created   | 1     |
| Threads_running   | 1     |
+-------------------+-------+
4 rows in set (0.00 sec)

值得注意的是,在上述show status like 'com_select'指令的執行示例中,顯示的SELECT語句統計信息僅僅表示當前會話鏈接執行的SELECT語句數量。由於,show status指令的完整語法以下:開發

SHOW [統計範圍] STATUS [LIKE '狀態項名稱'] --統計範圍關鍵字分爲GLOBALSESSION(或LOCAL)兩種。

show status的完整語法中,"[]"中的部分是可選的,若是咱們的show status語句中不包含統計範圍關鍵字,則默認統計範圍爲SESSION,也就是隻統計當前鏈接的狀態信息。若是咱們須要查詢自當前MySQL啓動後全部鏈接執行的SELECT語句總數,咱們能夠執行以下語句:

show global status like 'com_select';

以上便是show status的詳細用法。因爲show status的狀態統計項較多,咱們就再也不一一解釋每一個統計項的具體含義,在這裏,咱們僅列出部分經常使用的狀態信息查看語句:

 
 
  1. --查看MySQL本次啓動後的運行時間(單位:秒)
  2. show status like 'uptime';
  3. --查看select語句的執行數
  4. show [global] status like 'com_select';
  5. --查看insert語句的執行數
  6. show [global] status like 'com_insert';
  7. --查看update語句的執行數
  8. show [global] status like 'com_update';
  9. --查看delete語句的執行數
  10. show [global] status like 'com_delete';
  11. --查看試圖鏈接到MySQL(無論是否鏈接成功)的鏈接數
  12. show status like 'connections';
  13. --查看線程緩存內的線程的數量。
  14. show status like 'threads_cached';
  15. --查看當前打開的鏈接的數量。
  16. show status like 'threads_connected';
  17. --查看當前打開的鏈接的數量。
  18. show status like 'threads_connected';
  19. --查看建立用來處理鏈接的線程數。若是Threads_created較大,你可能要增長thread_cache_size值。
  20. show status like 'threads_created';
  21. --查看激活的(非睡眠狀態)線程數。
  22. show status like 'threads_running';
  23. --查看當即得到的表的鎖的次數。
  24. show status like 'table_locks_immediate';
  25. --查看不能當即得到的表的鎖的次數。若是該值較高,而且有性能問題,你應首先優化查詢,而後拆分表或使用複製。
  26. show status like 'table_locks_waited';
  27. --查看建立時間超過slow_launch_time秒的線程數。
  28. show status like 'slow_launch_threads';
  29. --查看查詢時間超過long_query_time秒的查詢的個數。
  30. show status like 'slow_queries';
相關文章
相關標籤/搜索