MySQL使用show status查看MySQL服務(wù)器狀態(tài)信息
在LAMP架構(gòu)的網(wǎng)站開發(fā)過程中,有些時候我們需要了解MySQL的服務(wù)器狀態(tài)信息,譬如當前MySQL啟動后的運行時間,當前MySQL的客戶端會話連接數(shù),當前MySQL服務(wù)器執(zhí)行的慢查詢數(shù),當前MySQL執(zhí)行了多少SELECT語句、執(zhí)行了多少UPDATE/DELETE/INSERT語句等統(tǒng)計信息,從而便于我們根據(jù)當前MySQL服務(wù)器的運行狀態(tài)進行對應(yīng)的調(diào)整或優(yōu)化工作。
在MySQL中,我們可以使用SHOW STATUS指令語句來查看MySQL服務(wù)器的狀態(tài)信息。下面,我們以DOS命令窗口的形式連接MySQL,并執(zhí)行show status;指令,我們將看到如下顯示信息:
當我們執(zhí)行show status語句時,MySQL將會列出多達300多條的狀態(tài)信息記錄,其中包括了供我們查看了解的各種信息。不過,如果直接使用show status指令得到300多條記錄,會讓我們看得眼花繚亂,因此我們希望能夠「按需查看」一部分狀態(tài)信息。這個時候,我們可以在show status語句后加上對應(yīng)的like子句。例如,我們想要查看當前MySQL啟動后的運行時間,我們可以執(zhí)行如下語句:
--查詢當前MySQL本次啟動后的運行統(tǒng)計時間 show status like 'uptime';
此時,我們就可以看到如下結(jié)果:
+---------------+-------+ | Variable_name | Value | +---------------+-------+ | Uptime | 5667 | +---------------+-------+ 1 row in set (0.00 sec)
同樣的,如果我們要本次MySQL啟動后執(zhí)行的SELECT語句的次數(shù),我們可以執(zhí)行如下語句:
show status like 'com_select';
對應(yīng)輸出結(jié)果如下:
+---------------+-------+ | Variable_name | Value | +---------------+-------+ | Com_select | 1 | +---------------+-------+ 1 row in set (0.00 sec)
此外,與WHERE子句中的LIKE關(guān)鍵字類似,show status后的LIKE關(guān)鍵字也可以使用'_' 或'%'等通配符來進行模糊匹配。例如我們可以執(zhí)行如下語句來查看MySQL服務(wù)器的線程信息:
show status like 'Thread_%';
對應(yīng)輸出結(jié)果如下:
+-------------------+-------+ | 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'指令的執(zhí)行示例中,顯示的SELECT語句統(tǒng)計信息僅僅表示當前會話連接執(zhí)行的SELECT語句數(shù)量。因為,show status指令的完整語法如下:
SHOW [統(tǒng)計范圍] STATUS [LIKE '狀態(tài)項名稱'] --統(tǒng)計范圍關(guān)鍵字分為GLOBAL和SESSION(或LOCAL)兩種。
在show status的完整語法中,"[]"中的部分是可選的,如果我們的show status語句中不包含統(tǒng)計范圍關(guān)鍵字,則默認統(tǒng)計范圍為SESSION,也就是只統(tǒng)計當前連接的狀態(tài)信息。如果我們需要查詢自當前MySQL啟動后所有連接執(zhí)行的SELECT語句總數(shù),我們可以執(zhí)行如下語句:
show global status like 'com_select';
以上即是show status的詳細用法。由于show status的狀態(tài)統(tǒng)計項較多,我們就不再一一解釋每個統(tǒng)計項的具體含義,在這里,我們僅列出部分常用的狀態(tài)信息查看語句:
--查看MySQL本次啟動后的運行時間(單位:秒) show status like 'uptime'; --查看select語句的執(zhí)行數(shù) show [global] status like 'com_select'; --查看insert語句的執(zhí)行數(shù) show [global] status like 'com_insert'; --查看update語句的執(zhí)行數(shù) show [global] status like 'com_update'; --查看delete語句的執(zhí)行數(shù) show [global] status like 'com_delete'; --查看試圖連接到MySQL(不管是否連接成功)的連接數(shù) show status like 'connections'; --查看線程緩存內(nèi)的線程的數(shù)量。 show status like 'threads_cached'; --查看當前打開的連接的數(shù)量。 show status like 'threads_connected'; --查看當前打開的連接的數(shù)量。 show status like 'threads_connected'; --查看創(chuàng)建用來處理連接的線程數(shù)。如果Threads_created較大,你可能要增加thread_cache_size值。 show status like 'threads_created'; --查看激活的(非睡眠狀態(tài))線程數(shù)。 show status like 'threads_running'; --查看立即獲得的表的鎖的次數(shù)。 show status like 'table_locks_immediate'; --查看不能立即獲得的表的鎖的次數(shù)。如果該值較高,并且有性能問題,你應(yīng)首先優(yōu)化查詢,然后拆分表或使用復(fù)制。 show status like 'table_locks_waited'; --查看創(chuàng)建時間超過slow_launch_time秒的線程數(shù)。 show status like 'slow_launch_threads'; --查看查詢時間超過long_query_time秒的查詢的個數(shù)。 show status like 'slow_queries';
上面的內(nèi)容就介紹到這,其他的可以參考腳本之家以前的文章。
相關(guān)文章
一次Mysql?update?sql不當引起的生產(chǎn)故障記錄
這篇文章主要給大家介紹了關(guān)于一次Mysql?update?sql不當引起的生產(chǎn)故障的相關(guān)資料,由于update涉及到數(shù)據(jù)的修改,所以很容易推斷,update語句比select語句會更復(fù)雜一些,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下2022-04-04MySQL實現(xiàn)批量插入測試數(shù)據(jù)的方式小結(jié)
在開發(fā)過程中我們不管是用來測試性能還是在生產(chǎn)環(huán)境中頁面展示好看一點,?經(jīng)常需要一些測試數(shù)據(jù),?本文主要介紹了兩種常用的MySQL測試數(shù)據(jù)批量生成方式,希望對大家有所幫助2023-11-11IOS 數(shù)據(jù)庫升級數(shù)據(jù)遷移的實例詳解
這篇文章主要介紹了IOS 數(shù)據(jù)庫升級數(shù)據(jù)遷移的實例詳解的相關(guān)資料,這里提供實例幫助大家解決數(shù)據(jù)庫升級及數(shù)據(jù)遷移的問題,需要的朋友可以參考下2017-07-07MySQL數(shù)據(jù)庫數(shù)據(jù)塊大小及配置方法
MySQL作為一種流行的關(guān)系數(shù)據(jù)庫管理系統(tǒng),在處理大規(guī)模數(shù)據(jù)存儲和查詢時,數(shù)據(jù)塊(data block)大小是一個至關(guān)重要的因素,本文將詳細探討MySQL數(shù)據(jù)庫的數(shù)據(jù)塊大小,結(jié)合實際例子說明其重要性和配置方法,感興趣的朋友跟隨小編一起看看吧2024-05-05