mysql連線執行緒的show和kill
阿新 • • 發佈:2018-12-07
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