怎样把坏的MySQL查询找到并杀死?

有时,关系型相关数据库系统的复杂性会把你搞晕,不过幸运的是,使用MySQL工具来管理查询就就可以避免这些复杂性。 《Linux就该这么学》的老师将向你们展示 怎样去查找并杀掉任何非法的MySQL查询。

show processlist’命令

  • 01

    为了浏览当前正在运行的查询,登陆到MySQL终端,然后运行‘show processlist’命令: mysql> show processlist; +--------+--------+-----------------+---------+---------+-------+-------+------------------+-----------+---------------+-----------+ | Id     | User   | Host            | db      | Command | Time  | State | Info             | Rows_sent | Rows_examined | Rows_read | +--------+--------+-----------------+---------+---------+-------+-------+------------------+-----------+---------------+-----------+ |  78233 | root   | 127.0.0.1:37527 | mysql   | Sleep   | 16474 |       | NULL             |         6 |             6 |         6 | |  84546 | root   | 127.0.0.1:48593 | mysql   | Sleep   | 13237 |       | NULL             |         2 |             2 |         2 | | 107083 | root   | 127.0.0.1:56451 | mysql   | Sleep   | 15488 |       | NULL             |         1 |           121 |       121 | | 131455 | root   | 127.0.0.1:48550 | NULL    | Query   |     0 | NULL  | show processlist |         0 |             0 |         0 | +--------+--------+-----------------+---------+---------+-------+-------+------------------+-----------+---------------+-----------+ 4 rows in set (0.03 sec)

  • 02

    首先你应该查看'Time'项,这里记录了进程执行 "做其当做的事情" 操作的秒数。‘command’项处于‘Sleep’ 状态的进程表示其正在等待接受查询,因此,它并没有消耗任何资源。对于其他任何进程而言,‘Time’超过一定的秒数表明出现问题。

  • 03

    在上面的例子中,唯一运行的查询是我们的‘show processlist’命令。让我们来看看如果我们有一个写的很烂的查询是怎么样的: mysql> show processlist; +--------+--------+-----------------+-----------+---------+-------+--------------+----------------------------------+-----------+---------------+-----------+ | Id     | User   | Host            | db        | Command | Time  | State        | Info                             | Rows_sent | Rows_examined | Rows_read | +--------+--------+-----------------+-----------+---------+-------+--------------+----------------------------------+-----------+---------------+-----------+ |  78233 | root   | 127.0.0.1:37527 | example   | Sleep   | 18046 |              | NULL                             |         6 |             6 |         6 | |  84546 | root   | 127.0.0.1:48593 | example   | Sleep   | 14809 |              | NULL                             |         2 |             2 |         2 | | 107083 | root   | 127.0.0.1:56451 | example   | Sleep   | 17060 |              | NULL                             |         1 |           121 |       121 | | 132033 | root   | 127.0.0.1:54642 | example   | Query   |    27 | Sending data | select max(subtotal) from orders |         0 |             0 |         0 | | 133933 | root   | 127.0.0.1:48679 | NULL      | Query   |     0 | NULL         | show processlist                 |         0 |             0 |         0 | | 134122 | root   | 127.0.0.1:49264 | example   | Sleep   |     0 |              | NULL                             |         0 |             0 |         0 | +--------+--------+-----------------+-----------+---------+-------+--------------+----------------------------------+-----------+---------------+-----------+ 6 rows in set (0.00 sec)

  • 04

    现在我们看到有一个查询运行了将近30秒。如果我们不想让它的进程继续运行,可以将它的'Id'传递给kill命令: mysql> kill 132033; Query OK, 0 rows affected (0.00 sec) mysql> 明智的使用kill命令能够清除积压的查询。然而,要记住的是,那不是一种永久的方法 - 如果这些查询来自你的程序,你需要去重写它们,或者将继续看到相同的问题不断出现。

(0)

相关推荐

  • mysql查询学生成绩的平均值

    mysql查询学生成绩的平均值的方法是怎么写 实例:select avg(sores) from user; 说明这里使用了集合函数avg()来找出学生的平均成绩 如图:

  • MySql查询语句介绍,多表联合查询

    mysql在网站开发中,越来越多人使用了,方便部署,方便使用.我们要掌握mysql,首先要学习查询语句.查询单个表的数据,和多个表的联合查询. 上一篇写了[MySql查询语句介绍,单表查询],下面以一 ...

  • mysql查询某个字段长度多少

    mysql有些时候需要查询某个字段的长度在多少显示数据 操作方法 01 一般查询语句:SELECT `lcontent` FROM `caiji_ym_liuyan` 查询数据: 02 有些时候需要查 ...

  • MySql查询语句介绍,单表查询

    mysql在网站开发中,越来越多人使用了,方便部署,方便使用.我们要掌握mysql,首先要学习查询语句.查询单个表的数据,和多个表的联合查询. 下面以一些例子来先简单介绍下单表查询. 操作方法 01 ...

  • mysql查询所有表和表字段sql语句

    mysql查询所有表和表字段sql语句

  • MySQL数据库十大优化技巧

    WEB开发者不光要解决程序的效率问题,对数据库的快速访问和相应也是一个大问题.希望本文能对大家掌握MySQL优化技巧有所帮助. 步骤/方法 01 1. 优化你的MySQL查询缓存 在MySQL服务器上 ...

  • mysql数据库建表和SQL修改表结构

    Mysql是我们经常使用的数据库之一,下面小编教大家如何使用Mysql新建数据表以及运用SQL更改表结构. 操作方法 01 打开Navicat for MySQL,找到一个数据库,然后右键单击表,选择 ...

  • 任务栏右下角弹出"Windows-延缓写入失败"或者"xxx-损坏...sk工具"

    知识点分析: 任务栏右下角弹出“Windows-延缓写入失败”或者“xxx-损坏文件 请运行Chkdsk工具”。 操作步骤: 方法一:Chkdsk工具 在开始---运行中输入cmd,然后输入chkds ...

  • 右下角弹出"Windows-延缓写入失败"或者"xxx-损坏文件 请运行Chkdsk工具"

    知识点分析: 任务栏右下角弹出“Windows-延缓写入失败”或者“xxx-损坏文件 请运行Chkdsk工具”。 操作步骤: 方法一:Chkdsk工具 在开始---运行中输入cmd,然后输入chkds ...