mysql 執行狀態

2021-06-18 10:11:18 字數 2214 閱讀 2447

show processlist;或使用mysql administrator  檢視當前執行connection的狀態:

state列出的狀態主要有以下幾種:

checking table

正在檢查資料表(這是自動的)。

closing tables

正在將表中修改的資料重新整理到磁碟中,同時正在關閉已經用完的表。這是乙個很快的操作,如果不是這樣的話,就應該確認磁碟空間是否已經滿了或者磁碟是否正處於重負中。

connect out

複製從伺服器正在連線主伺服器。

copying to tmp table on disk

由於臨時結果集大於 tmp_table_size,正在將臨時表從記憶體儲存轉為磁碟儲存以此節省記憶體。

creating tmp table

正在建立臨時表以存放部分查詢結果。

deleting from main table

伺服器正在執行多表刪除中的第一部分,剛刪除第乙個表。

deleting from reference tables

伺服器正在執行多表刪除中的第二部分,正在刪除其他表的記錄。

flushing tables

正在執行 flush tables,等待其他執行緒關閉資料表。

killed

傳送了乙個kill請求給某執行緒,那麼這個執行緒將會檢查kill標誌位,同時會放棄下乙個kill請求。mysql會在每次的主迴圈中檢查kill標誌位,不過有些情況下該執行緒可能會過一小段才能死掉。如果該線程程被其他執行緒鎖住了,那麼kill請求會在鎖釋放時馬上生效。

locked

被其他查詢鎖住了。

sending data

正在處理 select 查詢的記錄,同時正在把結果傳送給客戶端。

sorting for group

正在為 group by 做排序。

sorting for order

正在為 order by 做排序。

opening tables

這個過程應該會很快,除非受到其他因素的干擾。例如,在執 alter table 或 lock table 語句行完以前,資料表無法被其他執行緒開啟。 正嘗試開啟乙個表。

removing duplicates

正在執行乙個 select distinct 方式的查詢,但是mysql無法在前乙個階段優化掉那些重複的記錄。因此,mysql需要再次去掉重複的記錄,然後再把結果傳送給客戶端。

reopen table

獲得了對乙個表的鎖,但是必須在表結構修改之後才能獲得這個鎖。已經釋放鎖,關閉資料表,正嘗試重新開啟資料表。

repair by sorting

修復指令正在排序以建立索引。

repair with keycache

修復指令正在利用索引快取乙個乙個地建立新索引。它會比 repair by sorting 慢些。

searching rows for update

正在講符合條件的記錄找出來以備更新。它必須在 update 要修改相關的記錄之前就完成了。

sleeping

正在等待客戶端傳送新請求.

system lock

正在等待取得乙個外部的系統鎖。如果當前沒有執行多個 mysqld 伺服器同時請求同乙個表,那麼可以通過增加 –skip-external-locking引數來禁止外部系統鎖。

upgrading lock

insert delayed 正在嘗試取得乙個鎖表以插入新記錄。

updating

正在搜尋匹配的記錄,並且修改它們。

user lock

正在等待 get_lock()。

waiting for tables

該執行緒得到通知,資料表結構已經被修改了,需要重新開啟資料表以取得新的結構。然後,為了能的重新開啟資料表,必須等到所有其他執行緒關閉這個表。以下幾種情況下會產生這個通知:flush tables tbl_name, alter 

table, rename table, repair table, analyze table, 或 optimize table。

waiting for handler insert

insert delayed 已經處理完了所有待處理的插入操作,正在等待新的請求。

大部分狀態對應很快的操作,只要有乙個執行緒保持同乙個狀態好幾秒鐘,那麼可能是有問題發生了,需要檢查一下。還有其它的狀態沒在上面中列出來,不過它們大部分只是在檢視伺服器是否有存在錯誤是才用得著。

MySQL執行狀態分析

當感覺mysql效能出現問題時,通常會先看下當前mysql的執行狀態,使用 show processlist 來檢視,例如 其中state狀態列資訊非常重要,先看下各列含義,然後看下state常用狀態 1 id 乙個標識,你要kill乙個語句的時候使用,例如mysql kill 207 2 user...

檢視MySQL執行狀態

了解 mysql 資料庫的執行狀態查詢 了解當前 mysql 的執行時間 共執行了多少次 select update 是否進行碎片化整理 當前連線的個數 最大併發數 show status 命令常用的 show status like uptime 啟動時間 show status like com...

mysql 執行分析 mysql 執行狀態分析

當感覺mysql效能出現問題時,通常會先看下當前mysql的執行狀態,使用 show processlist 來檢視,例如 mysql show processlist id user host db command time state info 207 root 192.168.0.2 5162...