mysql查看正在执行的sql

在开发的过程中,我们经常需要查看一下当前数据库的执行情况,比如如果我们select一个数据,很长时间都没有返回,我们在想,是不是什么sql语句把表锁着了,或者什么sql把资源占完了,那么我们怎么查这条sql呢?

办法肯定是有的:

show full processlist

mysql> show full processlist;
+-------+----------+----------------------+----------------+---------+------+-------+-----------------------+
| Id    | User     | Host                 | db             | Command | Time | State | Info                  |
+-------+----------+----------------------+----------------+---------+------+-------+-----------------------+
|    25 | tuan_sql | 192.168.100.39:60161 | tao800         | Sleep   |   18 |       | NULL                  |
| 12196 | tuan_sql | 192.168.100.39:34410 | tao800         | Sleep   |   89 |       | NULL                  |
| 13067 | tuan_sql | 192.168.100.39:40964 | tao800         | Sleep   |  123 |       | NULL                  |
| 13158 | tuan_sql | 192.168.100.39:41496 | zhe_oem        | Sleep   | 3213 |       | NULL                  |
| 13181 | tuan_sql | 192.168.100.39:41574 | tao800         | Sleep   |   86 |       | NULL                  |
| 13620 | tuan_sql | 192.168.100.39:44335 | tao800         | Sleep   |    1 |       | NULL                  |
| 13795 | tuan_sql | 192.168.100.39:45502 | tao800         | Sleep   |  261 |       | NULL                  |
| 14961 | tuan_sql | 192.168.100.39:55012 | tao800         | Sleep   |   46 |       | NULL                  |
| 15244 | tuan_sql | 192.168.100.39:57875 | tao800         | Sleep   |  122 |       | NULL                  |
| 15305 | tuan_sql | 192.168.100.39:58398 | zhe800_lottery | Sleep   | 2705 |       | NULL                  |
| 15306 | tuan_sql | 192.168.100.39:58399 | zhe800_lottery | Sleep   | 2723 |       | NULL                  |
| 15334 | tuan_sql | 192.168.100.39:58712 | tao800         | Sleep   | 2151 |       | NULL                  |
| 15422 | tuan_sql | 192.168.100.39:59571 | tao800         | Sleep   |   27 |       | NULL                  |
| 15434 | tuan_sql | 192.168.100.39:59633 | tao800         | Sleep   |   18 |       | NULL                  |
| 15521 | tuan_sql | 192.168.100.39:60435 | tao800         | Sleep   | 1671 |       | NULL                  |
| 15598 | tuan_sql | 192.168.100.39:32768 | tao800         | Sleep   | 1151 |       | NULL                  |
| 15661 | tuan_sql | 192.168.100.39:33489 | tao800         | Sleep   |  643 |       | NULL                  |
| 15677 | tuan_sql | 192.168.100.39:33663 | tao800         | Sleep   |  264 |       | NULL                  |
| 15682 | tuan_sql | 192.168.100.39:33716 | tao800         | Sleep   |  264 |       | NULL                  |
| 15690 | tuan_sql | 192.168.100.39:33791 | tao800         | Query   |    0 | NULL  | show full processlist |
| 15707 | tuan_sql | 192.168.100.39:34000 | zhe_oem        | Sleep   |  285 |       | NULL                  |
| 15708 | tuan_sql | 192.168.100.39:34002 | zhe_oem        | Sleep   |  285 |       | NULL                  |
+-------+----------+----------------------+----------------+---------+------+-------+-----------------------+
22 rows in set (0.00 sec)

我们详细介绍一下每个属性是什么意思吧

id

很容易就猜到是这个连接的id,值对应这个连接使用的线程id。

User

用户名

Host

连接的地址和端口,那么你可能会问,为什么我贴的例子的地址都是同一个host呢,很明显是用了代理,感兴趣的可以看看这篇文章http://www.phpv.net/html/1583.html,这里就不详细解释了。

db

此连接所连接使用的数据库名。

command

一般有俩值:sleep和query,从字面意思就可以看出,一个是处理睡眠状态,就是处于连接状态,但是没有正在执行任何sql语句,Query代表正在执行sql语句。

Time

连接的时间。

State

我个人觉得应该是当前线程的状态吧。

info

代表正在执行的sql,如果command为sleep时,它为空。

那如果我们遇到一个sql要执行很长时间,但是我们又不想让它继续执行了,怎么办呢?既然每个连接是在一个线程里维护,这个线程是否可以删除呢?我们尝试一下:

mysql> show full processlist;
+-------+----------+----------------------+---------+---------+------+-------+-----------------------+
| Id    | User     | Host                 | db      | Command | Time | State | Info                  |
+-------+----------+----------------------+---------+---------+------+-------+-----------------------+
|    25 | tuan_sql | 192.168.100.39:60161 | tao800  | Sleep   |    2 |       | NULL                  |
| 12196 | tuan_sql | 192.168.100.39:34410 | tao800  | Sleep   |   43 |       | NULL                  |
| 13067 | tuan_sql | 192.168.100.39:40964 | tao800  | Sleep   |   77 |       | NULL                  |
| 13181 | tuan_sql | 192.168.100.39:41574 | tao800  | Sleep   |   69 |       | NULL                  |
| 13620 | tuan_sql | 192.168.100.39:44335 | tao800  | Sleep   |    2 |       | NULL                  |
| 13795 | tuan_sql | 192.168.100.39:45502 | tao800  | Sleep   |  215 |       | NULL                  |
| 14961 | tuan_sql | 192.168.100.39:55012 | tao800  | Sleep   |    0 |       | NULL                  |
| 15244 | tuan_sql | 192.168.100.39:57875 | tao800  | Sleep   |   76 |       | NULL                  |
| 15334 | tuan_sql | 192.168.100.39:58712 | tao800  | Sleep   | 3305 |       | NULL                  |
| 15422 | tuan_sql | 192.168.100.39:59571 | tao800  | Sleep   |  281 |       | NULL                  |
| 15434 | tuan_sql | 192.168.100.39:59633 | tao800  | Sleep   |  272 |       | NULL                  |
| 15521 | tuan_sql | 192.168.100.39:60435 | tao800  | Sleep   | 2825 |       | NULL                  |
| 15598 | tuan_sql | 192.168.100.39:32768 | tao800  | Sleep   | 2305 |       | NULL                  |
| 15690 | tuan_sql | 192.168.100.39:33791 | tao800  | Query   |    0 | NULL  | show full processlist |
| 15813 | tuan_sql | 192.168.100.39:35257 | zhe_oem | Sleep   |  239 |       | NULL                  |
| 15814 | tuan_sql | 192.168.100.39:35258 | zhe_oem | Sleep   |  239 |       | NULL                  |
+-------+----------+----------------------+---------+---------+------+-------+-----------------------+
16 rows in set (0.00 sec)


我们杀掉15814这个线程:
mysql> kill 15814;
Query OK, 0 rows affected (0.00 sec)

哈哈,还是可以的。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值