1. 程式人生 > 其它 >mysql 常用的SQL

mysql 常用的SQL

mysql常用的SQL

https://www.huaweicloud.com/articles/206e8f5e82331018f8cfde939455c319.html

# 按客戶端 IP 分組,看哪個客戶端的連結數最多

select client_ip,count(client_ip) as client_num from (select substring_index(host,':' ,1) as client_ip from information_schema.processlist) as connect_info group by client_ip order by client_num desc;

# 檢視正在執行的執行緒,並按 Time 倒排序,看看有沒有執行時間特別長的執行緒 select * from information_schema.processlist where Command != 'Sleep' order by Time desc; # 找出所有執行時間超過 5 分鐘的執行緒,拼湊出 kill 語句,方便後面查殺 (此處 5分鐘 可根據自己的需要調整SQL標紅處) 可複製查詢結果到控制檯,直接執行,殺死堵塞程序 select concat('kill ', id, ';') from information_schema.processlist where Command != '
Sleep' and Time > 300 order by Time desc; # 查詢執行緒及相關資訊 show full processlist
  • Id: 就是這個執行緒的唯一標識,當我們發現這個執行緒有問題的時候,可以通過 kill 命令,加上這個Id值將這個執行緒殺掉。前面我們說了show processlist 顯示的資訊時來自information_schema.processlist 表,所以這個Id就是這個表的主鍵。
  • User: 就是指啟動這個執行緒的使用者。
  • Host: 記錄了傳送請求的客戶端的 IP 和 埠號。通過這些資訊在排查問題的時候,我們可以定位到是哪個客戶端的哪個程序傳送的請求。
  • DB: 當前執行的命令是在哪一個資料庫上。如果沒有指定資料庫,則該值為 NULL 。
  • Command: 是指此刻該執行緒正在執行的命令。這個很複雜,下面單獨解釋
  • Time: 表示該執行緒處於當前狀態的時間。
  • State: 執行緒的狀態,和 Command 對應,下面單獨解釋。
  • Info: 一般記錄的是執行緒執行的語句。預設只顯示前100個字元,也就是你看到的語句可能是截斷了的,要看全部資訊,需要使用 show full processlist。

下面我們單獨看一下 Command 的值:

  • Binlog Dump: 主節點正在將二進位制日誌 ,同步到從節點
  • Change User: 正在執行一個 change-user 的操作
  • Close Stmt: 正在關閉一個Prepared Statement 物件
  • Connect: 一個從節點連上了主節點
  • Connect Out: 一個從節點正在連主節點
  • Create DB: 正在執行一個create-database 的操作
  • Daemon: 伺服器內部執行緒,而不是來自客戶端的連結
  • Debug: 執行緒正在生成除錯資訊
  • Delayed Insert: 該執行緒是一個延遲插入的處理程式
  • Drop DB: 正在執行一個 drop-database 的操作
  • Execute: 正在執行一個 Prepared Statement
  • Fetch: 正在從Prepared Statement 中獲取執行結果
  • Field List: 正在獲取表的列資訊
  • Init DB: 該執行緒正在選取一個預設的資料庫
  • Kill : 正在執行 kill 語句,殺死指定執行緒
  • Long Data: 正在從Prepared Statement 中檢索 long data
  • Ping: 正在處理 server-ping 的請求
  • Prepare: 該執行緒正在準備一個 Prepared Statement
  • ProcessList: 該執行緒正在生成伺服器執行緒相關資訊
  • Query: 該執行緒正在執行一個語句
  • Quit: 該執行緒正在退出
  • Refresh:該執行緒正在刷表,日誌或快取;或者在重置狀態變數,或者在複製伺服器資訊
  • Register Slave: 正在註冊從節點
  • Reset Stmt: 正在重置 prepared statement
  • Set Option: 正在設定或重置客戶端的 statement-execution 選項
  • Shutdown: 正在關閉伺服器
  • Sleep: 正在等待客戶端向它傳送執行語句
  • Statistics: 該執行緒正在生成 server-status 資訊
  • Table Dump: 正在傳送表的內容到從伺服器
  • Time: Unused