1. 程式人生 > >mysql連線執行緒的show和kill

mysql連線執行緒的show和kill

1、登陸到mysql伺服器

        Mysql –h ip –u 使用者名稱 –p 密碼;

2、檢查當前連線的執行緒

        show full processlist 或

        show processlist 或

        selelct * from information_schema.processlist;

         

        Id:執行緒標識

        User:當前使用者

        Host:sql的來源,ip和port

        Db:程序連線的資料庫名

        Command:當前連線執行的命令,一般是sleep、connect和query,當sleep程序很多時,容易導致資料庫掛死

        Time:當前連線狀態持續時間(秒)

        State:當前連線sql的狀態,例如:查詢sql可能需要經過copying to tmp table,Sorting result,Sending data等狀態

       state常見狀態如下: 

Checking table :檢查資料表

Closing tables:正在將表中修改的資料重新整理到磁碟中,同時正在關閉已經用完的表,如果這個狀態一直持續,可以考慮一下是否磁碟已滿或者操作磁碟程序太多
Connect Out:

Copying to tmp table on disk:正在將臨時儲存到記憶體的資料copy到磁碟

Creating tmp table:正在建立臨時表

deleting from main table:執行多表刪除

Flushing tables:等待其他執行緒關閉資料表

Killed:kill掉某程序

Locked:被其他查詢鎖住了

Sending data:正在處理select查詢的資料,並試圖將結果傳送到客戶端

Sorting for group:正在為group進行排序

Sorting for order:正在為order進行排序,持續時間過長建議新增order by欄位索引

Opening tables:正在嘗試開啟一張表

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

Reopen table:試圖重新開啟表

Repair by sorting:修復指令正在排序以建立索引

Repair with keycache:修復指令正在利用索引快取一個一個地建立新索引。它會比 Repair by sorting 慢些

Searching rows for update:將符合條件的資料找出來以備更新

Sleeping:正在等待接受新請求

System lock:正在等待取得一個外部的系統鎖

Upgrading lock:正在嘗試取得一個鎖表以插入新記錄

Updating:正在搜尋匹配的上的,可以修改的資料

User Lock:正在等待 GET_LOCK()

Waiting for tables:該執行緒得到通知,資料表結構已經被修改了,需要重新開啟資料表以取得新的結構

waiting for handler insert:INSERT DELAYED 已經處理完了所有待處理的插入操作,正在等待新的請求

         Info:sql內容

3、殺掉耗資源的執行緒

         KILL [CONNECTION | QUERY] processlist_id

         例如:kill 67169159  -- 預設修飾符是CONNECTION