MySQL的show processlist:正在运行的线程
生活随笔
收集整理的這篇文章主要介紹了
MySQL的show processlist:正在运行的线程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這個命令中最關鍵的就是state列,mysql列出的狀態主要有以下幾種: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?#正在搜索匹配的記錄,并且修改它們。?
INSERT?DELAYED?#已經處理完了所有待處理的插入操作,正在等待新的請求。
?
總結
以上是生活随笔為你收集整理的MySQL的show processlist:正在运行的线程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 现在农村能好赚钱的生意 机会千万要抓住
- 下一篇: MySQL加索引语句不加锁:ALGORI