一 簡介:kill session為什么需要很久
二 kill語句分為三類
1 DML語句
2 select語句
3 DDL語句
三 kill都要做什么操作
1 kill對session的處理
1 正在執行的session
2 正在等待的session
2 把session的狀態改成THD::KILLQUERY -> 給session發送一個信號->線程執行到判斷session狀態的邏輯->執行后續操作終止session
四 kill慢的原因
1 是非常大的事務,需要回滾操作的成本非常高,還原數據,釋放鎖
2 是非常慢的sql,需要清理相應的臨時表臨時文件
3 對於大表的DDL操作,執行的時間越長,回滾的代價越高,有的操作需要清理臨時表.
4 服務器的IO和cpu壓力太高,導致出現等待,導致kill慢
五 總結
我們可以發現 kill只是發了一個信號,后續處理還是得mysql自身根據不同的操作進行后續處理