mysql最佳化之show status查看MySQL伺服器狀態資訊

來源:互聯網
上載者:User

在LAMP架構的網站開發過程中,有些時候我們需要瞭解MySQL的伺服器狀態資訊,譬如當前MySQL啟動後的已耗用時間,當前MySQL的用戶端工作階段串連數,當前MySQL伺服器執行的慢查詢數,當前MySQL執行了多少SELECT語句、執行了多少UPDATE/DELETE/INSERT語句等統計資訊,從而便於我們根據當前MySQL伺服器的運行狀態進行對應的調整或最佳化工作。

在MySQL中,我們可以使用SHOW STATUS指令語句來查看MySQL伺服器的狀態資訊。下面,我們以DOS命令視窗的形式串連MySQL,並執行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的狀態統計項較多,我們就不再一一解釋每個統計項的具體含義,在這裡,我們僅列出部分常用的狀態資訊查看語句:

 

 代碼如下 複製代碼

   --查看MySQL本次啟動後的已耗用時間(單位:秒)
    show status like 'uptime';

    --查看select語句的執行數
    show [global] status like 'com_select';

    --查看insert語句的執行數
    show [global] status like 'com_insert';

    --查看update語句的執行數
    show [global] status like 'com_update';

    --查看delete語句的執行數
    show [global] status like 'com_delete';

    --查看試圖串連到MySQL(不管是否串連成功)的串連數
    show status like 'connections';

    --查看線程緩衝內的線程的數量。
    show status like 'threads_cached';

    --查看當前開啟的串連的數量。
    show status like 'threads_connected';

    --查看當前開啟的串連的數量。
    show status like 'threads_connected';

    --查看建立用來處理串連的線程數。如果Threads_created較大,你可能要增加thread_cache_size值。
    show status like 'threads_created';

    --查看啟用的(非睡眠狀態)線程數。
    show status like 'threads_running';


    --查看立即獲得的表的鎖的次數。
    show status like 'table_locks_immediate';

    --查看不能立即獲得的表的鎖的次數。如果該值較高,並且有效能問題,你應首先最佳化查詢,然後拆分表或使用複製。
    show status like 'table_locks_waited';

    --查看建立時間超過slow_launch_time秒的線程數。
    show status like 'slow_launch_threads';

    --查看查詢時間超過long_query_time秒的查詢的個數。
    show status like 'slow_queries';

上面只是對伺服器的最佳化當然我們還可以最佳化sql查詢語句了,相關文章:MySQL啟用慢查詢日誌記錄方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.