MySQL 中的 processlist 可以展示 MySQL 中有哪些线程在运行。
在 MySQL 中执行下述命令,得到的结果如下图所示:

show processlist sleep状态怎么执行提交 show processlist time_服务器

 

上图中的各列名及其取值如下所示:

  • id:线程标志,系统分配的 connection_id ,可以使用 select connection_id() 查看,出问题也是用 kill + id 去杀线程,使用 mysql > kill id;
  • User:显示当前用户,如果当前不是用 root 查询,这个命令只显示用户权限范围的sql语句;
  • Host:该语句是来源,即从哪个IP和端口访问的;
  • db:显示当前进程连接的数据库
  • Command:执行的命令类型,一般是休眠(sleep),查询(query),连接(connect);
  • Time:SQL语句持续的时间,单位是秒;
  • State:语句执行状态,有 copying to tmp tableSorting resultSending data 等状态;
  • info:显示执行的 SQL 语句;

State 列的状态

  • Checking table:检查表;
  • Closing tables:将表中修改的数据刷新(Flush)到磁盘中,同时关闭已经用完的表;
  • Copying to tmp table on disk:内存存储转换为硬盘存储;
  • Creating tmp table:创建临时表;
  • deleting from main table:多表删除中的第一步;
  • deleting from reference tables:多表删除中的第二步;
  • Flushing tablesFLUSH TABLES,等待其他线程关闭数据表
  • Locked:查询有锁;
  • Sending data:正在执行 SELECT 查询,然后把结果发送给客户端;
  • Sorting for group:正在为分组排序;
  • Sorting for order:正在排序

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