SHOW [FULL] PROCESSLIST

用于查看当前正在运行的线程。如果执行此命令的用户拥有 PROCESS 权限,则可看到所有线程;否则只能看到自己的线程(即与当前登录用户关联的线程)。如果不使用FULL关键字,只在Info字段中展示前100个字符。

image.png

command 取值

  • Binlog Dump:主库上的线程,用于将binlog内容发送到从库
  • Change user:线程正在执行更改用户操作
  • Close stmt:线程正在关闭一个prepared statement
  • Connect:一个复制从库已连接到其主库
  • Connect Out:一个复制从库正在连接到其主库
  • Create DB:线程正在执行create-database操作
  • Daemon:服务器内部线程,而非为客户端连接提供服务的线程
  • Debug:该线程正在生成调试信息
  • Delayed insert:该线程是延迟插入处理程序
  • Drop DB:线程正在执行drop-database操作。
  • Error:你懂的
  • Execute:线程正在执行一个prepared statement
  • Fetch:正在从Prepared Statement 中获取执行结果
  • Field List:该线程正在获取表的字段信息
  • Init DB:线程正在选择默认数据库。
  • 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:线程正在设置或重置client statement-execution选项
  • Shutdown:线程正在关闭服务器
  • Sleep:线程正在等待客户端向其发送statement
  • Statistics:该线程正在生成服务器状态信息
  • Table Dump:线程正在将表内容发送到从属服务器。
  • Time:Unused

分享几个操作 INFORMATION_SCHEMA.PROCESSLIST 表的实用SQL。

  1. -- 按照客户端IP分组,看哪个客户端的连接数最多
  2. select client_ip, count(client_ip) as client_num
  3. from (select substring_index(host, ':', 1) as client_ip
  4. from `information_schema`.processlist) as connect_info
  5. group by client_ip
  6. order by client_num desc;
  7. -- 查看正在执行的线程,并按 Time 倒排序,看看有没有执行时间特别长的线程
  8. select *
  9. from `information_schema`.processlist
  10. where Command != 'Sleep'
  11. order by Time desc;
  12. -- 找出所有执行时间超过 5 分钟的线程,拼凑出 kill 语句,方便后面查杀
  13. select concat('kill ', id, ';')
  14. from `information_schema`.processlist
  15. where Command != 'Sleep'
  16. and Time > 300
  17. order by Time desc;

SHOW STATUS

作用:查看服务器相关信息。返回结果解读详见:Server Status Variables
语法:

SHOW [GLOBAL | SESSION] STATUS
    [LIKE 'pattern' | WHERE expr]

示例:

SHOW STATUS;
SHOW GLOBAL STATUS like '%Slow%'

参考文档:
SHOW STATUS Statement

SHOW VARIABLES

作用:查看MySQL的变量,内容解读详见: Server System Variables
语法:

SHOW [GLOBAL | SESSION] VARIABLES
    [LIKE 'pattern' | WHERE expr]

示例:

SHOW VARIABLES;

参考文档:
SHOW VARIABLES Statement

SHOW TABLE STATUS

作用:查看表以及视图的状态
语法:

SHOW TABLE STATUS
    [{FROM | IN} db_name]
    [LIKE 'pattern' | WHERE expr]

示例:

SHOW TABLE STATUS from employees;

参考文档:
SHOW TABLE STATUS Statement

SHOW INDEX

作用:查看索引相关信息
语法:

SHOW [EXTENDED] {INDEX | INDEXES | KEYS}
    {FROM | IN} tbl_name
    [{FROM | IN} db_name]
    [WHERE expr]

示例:

SHOW INDEX FROM mytable FROM mydb;
SHOW INDEX FROM mydb.mytable;

参考文档:
SHOW INDEX Statement

SHOW ENGINE

作用:展示有关存储引擎的相关信息。
语法:

SHOW ENGINE engine_name {STATUS | MUTEX}

示例:

-- 有关innodb的内容解读详见:https://dev.mysql.com/doc/refman/8.0/en/innodb-standard-monitor.html
SHOW ENGINE INNODB STATUS
SHOW ENGINE INNODB MUTEX

参考文档:
SHOW ENGINE Statement

SHOW MASTER STATUS

作用:展示有关master binlog文件的相关信息
语法:

SHOW MASTER STATUS

示例:

SHOW MASTER STATUS

参考文档:
SHOW MASTER STATUS Statement

SHOW SLAVE STATUS

作用:展示slave线程的相关信息
语法:

SHOW SLAVE STATUS [FOR CHANNEL channel]

示例:

SHOW SLAVE STATUS

参考文档:
SHOW SLAVE STATUS Statement

SHOW PROCEDURE

作用:返回存储过程相关信息
语法:

SHOW PROCEDURE STATUS
    [LIKE 'pattern' | WHERE expr]

示例:

SHOW PROCEDURE STATUS LIKE 'sp1'

参考文档:
SHOW PROCEDURE STATUS Statement

SHOW FUNCTION STATUS

作用:查看函数相关信息
语法:

SHOW FUNCTION STATUS
    [LIKE 'pattern' | WHERE expr]

示例:

SHOW FUNCTION STATUS

参考文档:
SHOW FUNCTION STATUS Statement

SHOW TRIGGERS

作用:查看触发器相关信息
语法:

SHOW TRIGGERS
    [{FROM | IN} db_name]
    [LIKE 'pattern' | WHERE expr]

示例:

SHOW TRIGGERS LIKE 'acc%'

参考文档:
SHOW TRIGGERS Statement

SHOW WARNINGS

作用:展示error、warning、note级别的诊断信息
语法:

SHOW WARNINGS [LIMIT [offset,] row_count]
SHOW COUNT(*) WARNINGS

示例:

mysql> CREATE TABLE t1 (a TINYINT NOT NULL, b CHAR(4));
Query OK, 0 rows affected (0.05 sec)
mysql> INSERT INTO t1 VALUES(10,'mysql'), (NULL,'test'), (300,'xyz');
Query OK, 3 rows affected, 3 warnings (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 3
mysql> SHOW WARNINGS\G
*************************** 1. row ***************************
  Level: Warning
   Code: 1265
Message: Data truncated for column 'b' at row 1
*************************** 2. row ***************************
  Level: Warning
   Code: 1048
Message: Column 'a' cannot be null
*************************** 3. row ***************************
  Level: Warning
   Code: 1264
Message: Out of range value for column 'a' at row 3
3 rows in set (0.00 sec)

参考文档:
SHOW WARNINGS Statement

SHOW ERRORS

作用:展示error级别的诊断信息,和show warnings类似。
语法:

SHOW ERRORS [LIMIT [offset,] row_count]
SHOW COUNT(*) ERRORS

示例:

SHOW COUNT(*) ERRORS;
SELECT @@error_count;

参考文档:
SHOW ERRORS Statement

SHOW BINARY LOGS

作用:列出服务器上的所有binary log
语法:

SHOW BINARY LOGS
SHOW MASTER LOGS

示例:

SHOW BINARY LOGS;

参考文档:
SHOW BINARY LOGS Statement

SHOW BINLOG EVENTS

作用:查看binary log中的事件
语法:

SHOW BINLOG EVENTS
   [IN 'log_name']
   [FROM pos]
   [LIMIT [offset,] row_count]

示例:

SHOW BINLOG EVENTS
• 1

参考文档:
SHOW BINLOG EVENTS Statement

SHOW RELAYLOG EVENTS

作用:查看复制从库的relay log事件相关信息
语法:

SHOW RELAYLOG EVENTS
    [IN 'log_name']
    [FROM pos]
    [LIMIT [offset,] row_count]
    [channel_option]
channel_option:
    FOR CHANNEL channel

示例:

SHOW RELAYLOG EVENTS

参考文档:
SHOW RELAYLOG EVENTS Statement