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

來源:本站原創 mysql_mariadb 超過435 views圍觀 0條評論

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

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

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

當我們執行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';

對應輸出結果如下:

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

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

show status like 'Thread_%';

對應輸出結果如下:

+-------------------+-------+
| 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 '狀態項名稱']
--統計范圍關鍵字分為GLOBAL和SESSION(或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’;
文章出自:CCIE那點事 http://www.qdxgqk.live/ 版權所有。本站文章除注明出處外,皆為作者原創文章,可自由引用,但請注明來源。 禁止全文轉載。
本文鏈接:http://www.qdxgqk.live/?p=3640轉載請注明轉自CCIE那點事
如果喜歡:點此訂閱本站
  • 相關文章
  • 為您推薦
  • 各種觀點
?
暫時還木有人評論,坐等沙發!
發表評論

您必須 [ 登錄 ] 才能發表留言!

?
?
萌宠夺宝游戏