mysql查询正在执行的进程

本文介绍了两种查看MySQL进程的方法及show processlist命令的输出解析,包括各列含义和如何使用SUPER权限查看全部线程。

查看mysql进程有两种方法

1.进入mysql/bin目录下输入mysqladmin processlist;

2.启动mysql,输入show processlist;

如果有SUPER权限,则可以看到全部的线程,否则,只能看到自己发起的线程(这是指,当前对应的MySQL帐户运行的线程)。

mysql> show processlist;

+-------+-----------+---------------------+----------+---------+------+-------+------------------+

| Id | User | Host | db | Command | Time | State | Info |

+-------+-----------+---------------------+----------+---------+------+-------+------------------+

| 19161 | test_user | 171.8.216.253:63583 | tbkttest | Sleep | 685 | | NULL |

| 19164 | test_user | 171.8.216.253:63677 | tbkttest | Sleep | 297 | | NULL |

| 19165 | root | localhost | tbkttest | Query | 0 | NULL | show processlist |

| 19166 | root | localhost | NULL | Sleep | 36 | | NULL |

+-------+-----------+---------------------+----------+---------+------+-------+------------------+

4 rows in set (0.00 sec)

 

先简单说一下各列的含义和用途,

第一列 id,不用说了吧,一个标识,你要kill一个语句的时候很有用。

第二列 user列,显示单前用户,如果不是root,这个命令就只显示你权限范围内的sql语句。

第三列 host列,显示这个语句是从哪个ip的哪个端口上发出的。可以用来追踪出问题语句的用户。

第四列 db列,显示这个进程目前连接的是哪个数据库。

第五列 command列,显示当前连接的执行的命令,一般就是休眠(sleep),查询(query),连接(connect)。

第六列 time列,此这个状态持续的时间,单位是秒。

第七列 state列,显示使用当前连接的sql语句的状态,很重要的列,后续会有所有的状态的描述,请注意,state只是语句执行中的某一个状态,一个sql语句,已查询为例,可能需要经过copying to tmp table,Sorting result,Sending data等状态才可以完成。

第八列 info列,显示这个sql语句,因为长度有限,所以长的sql语句就显示不全,但是一个判断问题语句的重要依据。

mysql手册里有所有状态的说明,链接如下:http://dev.mysql.com/doc/refman/5.0/en/general-thread-states.html

 

杀死进程 kill id



http://www.cnblogs.com/weiok/p/5672238.html

<think>好的,用户现在的问题是“如何在cmd中查看当前运行MySQL进程”。我需要结合之前的对话和提供的引用资料来给出准确的回答。 首先回顾之前的对话,用户之前询问过如何终止MySQL进程,我给出了使用tasklist和findstr命令查找进程的方法。现在用户的问题是如何查看正在运行MySQL进程,这应该是类似的方法,但可能更详细。 接着查看用户提供的引用资料。引用[1]提到了在cmd下运行MySQL和注册服务的方法,但用户现在的问题是关于查看进程,所以可能相关度不高。引用[2]和引用[3]提到使用SHOW PROCESSLIST和ps命令,但用户现在是在Windows环境下使用cmd,所以ps命令可能不适用,但SHOW PROCESSLIST是MySQL内部的命令,可能需要用户先登录MySQL执行。引用[3]中的例子是Linux下的ps命令,但用户当前环境是Windows,所以需要调整方法。 用户的需求是在cmd中查看MySQL进程,可能有几种方法:一种是查看系统进程,即mysqld.exe是否存在;另一种是查看MySQL内部的线程或连接情况,比如哪些查询正在执行。 根据之前的回答,用户已经知道用tasklist | findstr "mysqld"来查找进程,但这次可能需要更详细的步骤,或者用户想确认是否有其他方法,比如通过MySQL命令行工具内部查看。 因此,我需要分两部分回答:一是通过系统命令查看MySQL服务进程是否存在,二是通过MySQL客户端查看当前的连接和线程情况。 另外,用户可能没有考虑到权限问题,比如是否需要管理员权限运行cmd,或者是否需要SUPER权限来查看所有线程。引用[2]中提到,如果有SUPER权限可以看到所有线程,否则只能看到自己的。这点需要提醒用户。 还需要注意用户是否已经安装了MySQL服务,如果没有,可能需要先注册服务,但根据当前问题,用户可能已经运行MySQL,所以重点放在查看进程上。 总结回答步骤: 1. 使用系统命令tasklist和findstr查找mysqld.exe进程,确认MySQL是否在运行。 2. 使用MySQL命令行工具登录后执行SHOW PROCESSLIST; 查看当前数据库连接和线程状态。 3. 补充说明权限问题和常见状态的含义,帮助用户理解输出结果。 4. 可能的话,提醒用户如果服务未运行,如何启动,但根据问题,用户可能已经运行MySQL,所以可能不需要这部分。 需要确保命令的准确性,比如在cmd中执行mysql -u root -p后输入密码,再执行SHOW PROCESSLIST;。同时,引用之前的引用资料中的内容,比如引用[2]和引用[3],但要注意适用环境。 最后,生成相关问题,可能涉及如何终止进程、如何解决连接问题等,与之前的问题相关,但需要避免重复,比如用户之前已经问过终止进程的问题,所以相关问题可以是查看锁表情况或处理连接数过多的问题。</think>根据系统进程监控和MySQL内部状态查询的双重维度,可通过以下两种方式在CMD中查看MySQL进程: ### 一、系统级进程查询(Windows环境) 1. **查找mysqld主进程** ```cmd tasklist /FI "IMAGENAME eq mysqld.exe" ``` 输出示例: ``` 映像名称 PID 会话名 会话# 内存使用 mysqld.exe 1234 Services 0 456,788 K ``` *说明*:显示MySQL服务主进程运行状态[^3] 2. **过滤所有相关进程** ```cmd tasklist | findstr /i "mysql" ``` 包含客户端连接、备份工具等关联进程 ### 二、数据库连接查询(需MySQL权限) 1. **登录MySQL客户端** ```cmd mysql -u root -p ``` 2. **查看活动连接** ```sql SHOW PROCESSLIST; ``` 输出示例: ``` +----+------+-----------------+------+---------+------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+------+-----------------+------+---------+------+-------+------------------+ | 5 | root | localhost:61234 | test | Query | 0 | init | SHOW PROCESSLIST | | 8 | app | 192.168.1.5:... | prod | Sleep | 245 | | NULL | +----+------+-----------------+------+---------+------+-------+------------------+ ``` **关键字段说明**: - `Command`:执行操作类型(Query/Sleep等) - `Time`:持续时长(秒) - `State`:线程状态(Updating表明正在修改数据)[^2] - `Info`:正在执行的SQL语句 ### 三、结果验证要点 1. 若系统进程存在但无法连接,检查`mysqld.exe`是否处于无响应状态 2. 长期`Sleep`状态的连接可能需用`KILL [id]`清理 3. 带`Locked`状态的进程表示表被锁定[^2] --相关问题-- 1. 如何识别MySQL中的慢查询进程? 2. 怎样处理MySQL表被锁定的情况? 3. 为什么SHOW PROCESSLIST看不到所有数据库连接?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值