在日常mysql運維中,經常要查詢當前mysql下正在執行的sql語句及其他在跑的mysql相關線程,這就用到mysql processlist這個命令了。
mysql> show processlist; //查詢正在執行的sql語句
mysql> show full processlist; //查詢正在執行的完整sql語句
mysql> kill connection id //停掉processlist查詢出的某個線程,id是對應的id號
mysql> show processlist;
+------+-------+---------------------+--------+-------------+------+-----------------------------------------------------------------------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +------+-------+---------------------+--------+-------------+------+-----------------------------------------------------------------------+------------------+ | 1574 | root | localhost | huanpc | Sleep | 702 | | NULL | | 1955 | root | localhost | NULL | Query | 0 | init | show processlist | | 1958 | slave | 192.168.1.102:37399 | NULL | Binlog Dump | 10 | Master has sent all binlog to slave; waiting for binlog to be updated | NULL | +------+-------+---------------------+--------+-------------+------+-----------------------------------------------------------------------+------------------+ 3 rows in set (0.00 sec) mysql> kill connection 1574; Query OK, 0 rows affected (0.00 sec) mysql> show processlist; +------+-------+---------------------+------+-------------+------+-----------------------------------------------------------------------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +------+-------+---------------------+------+-------------+------+-----------------------------------------------------------------------+------------------+ | 1955 | root | localhost | NULL | Query | 0 | init | show processlist | | 1958 | slave | 192.168.1.102:37399 | NULL | Binlog Dump | 18 | Master has sent all binlog to slave; waiting for binlog to be updated | NULL | +------+-------+---------------------+------+-------------+------+-----------------------------------------------------------------------+------------------+ 2 rows in set (0.00 sec)
除此之外,show processlist還能查看當前mysql連接數。
如果是root帳號,能看到所有用戶的當前連接。
如果是其它普通帳號,只能看到自己占用的連接。
注意:
show processlist;只列出前100條
如果想全列出要使用show full processlist;
使用show status;可以比較全面地查看到mysql狀態
mysql> show status;
參數解釋:
Aborted_clients 由於客戶沒有正確關閉連接已經死掉,已經放棄的連接數量。
Aborted_connects 嘗試已經失敗的MySQL服務器的連接的次數。
Connections 試圖連接MySQL服務器的次數。
Created_tmp_tables 當執行語句時,已經被創造了的隱含臨時表的數量。
Delayed_insert_threads 正在使用的延遲插入處理器線程的數量。
Delayed_writes 用INSERT DELAYED寫入的行數。
Delayed_errors 用INSERT DELAYED寫入的發生某些錯誤(可能重復鍵值)的行數。
Flush_commands 執行FLUSH命令的次數。
Handler_delete 請求從一張表中刪除行的次數。
Handler_read_first 請求讀入表中第一行的次數。
Handler_read_key 請求數字基於鍵讀行。
Handler_read_next 請求讀入基於一個鍵的一行的次數。
Handler_read_rnd 請求讀入基於一個固定位置的一行的次數。
Handler_update 請求更新表中一行的次數。
Handler_write 請求向表中插入一行的次數。
Key_blocks_used 用於關鍵字緩存的塊的數量。
Key_read_requests 請求從緩存讀入一個鍵值的次數。
Key_reads 從磁盤物理讀入一個鍵值的次數。
Key_write_requests 請求將一個關鍵字塊寫入緩存次數。
Key_writes 將一個鍵值塊物理寫入磁盤的次數。
Max_used_connections 同時使用的連接的最大數目。
Not_flushed_key_blocks 在鍵緩存中已經改變但是還沒被清空到磁盤上的鍵塊。
Not_flushed_delayed_rows 在INSERT DELAY隊列中等待寫入的行的數量。
Open_tables 打開表的數量。
Open_files 打開文件的數量。
Open_streams 打開流的數量(主要用於日志記載)
Opened_tables 已經打開的表的數量。
Questions 發往服務器的查詢的數量。
Slow_queries 要花超過long_query_time時間的查詢數量。
Threads_connected 當前打開的連接的數量。
Threads_running 不在睡眠的線程數量。
Uptime 服務器工作了多少秒。