mysql -uroot -p #登陸數據庫 ******** #輸入數據庫密碼 mysql show processlist; show processlist 命令詳解: processlist命令的輸出結果顯示了有哪些線程在運行,可以幫助識別出有問題的查詢語句。 先簡單說一下各列的含義和用途,第一列,id,不用說了吧,一個標識,你要kill一個語句的時候很有用。user列,顯示單前用戶,如果不是root,這個命令就只顯示你權限范圍內的sql語句。host列,顯示這個語句是從哪個ip的哪個端口上發出的。呵呵,可以用來追蹤出問題語句的用戶。db列,顯示這個進程目前連接的是哪個數據庫 。command列,顯示當前連接的執行的命令,一般就是休眠(sleep),查詢(query),連接(connect)。time列,此這個狀態持續的時間,單位是秒。state列,顯示使用當前連接的sql語句的狀態,很重要的列,后續會有所有的狀態的描述,請注意,state只是語句執行中的某一個狀態,一個sql語句,已查詢為例,可能需要經過copying to tmp table,Sorting result,Sending data等狀態才可以完成,info列,顯示這個sql語句,因為長度有限,所以長的sql語句就顯示不全,但是一個判斷問題語句的重要依據。 常見問題 : 一般是睡眠連接過多,嚴重消耗mysql服務器資源(主要是cpu, 內存),並可能導致mysql崩潰。 解決辦法 : mysql的配置my.ini文件中,有一項: wait_timeout, 即可設置睡眠連接超時秒數,如果某個連接超時,會被mysql自然終止。 wait_timeout過大有弊端,其體現就是MySQL里大量的SLEEP進程無法及時釋放,拖累系統性能,不過也不能把這個指設置的過小,否則你可能會遭遇到“MySQL has gone away”之類的問題,通常來說,我覺得把wait_timeout設置為10是個不錯的選擇,但某些情況下可能也會出問題,比如說有一個CRON腳本,其中兩次SQL查詢的間隔時間大於10秒的話,那么這個設置就有問題了(當然,這也不是不能解決的問題,你可以在程序里時不時mysql_ping一下,以便服務器知道你還活着,重新計算wait_timeout時間): mysql show global variables like wait_timeout 更多內容:http://www.wangzhanjianshegs.com/網站建設 |