Как отменить запрос в MySQL

Иногда, работая в phpmyadmin (да и не только) с базами данных MySQL, можно написать (в силу разных причин) некорректный select выполнение которого может затянуться на неопределнный срок. Чтобы остановить выполнение такого запроса я делаю следующее.

Подключаюсь к серверу MySQL из командной строки:

mysql -u sqluser -p

Затем выполняю команду show processlist:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
mysql> show processlist;
+--------+----------+-------------------+----------+---------+------+--------------+------------------------------------------------------------------------------------------------------+
| Id     | User     | Host              | db       | Command | Time | State        | Info                                                                                                 |
+--------+----------+-------------------+----------+---------+------+--------------+------------------------------------------------------------------------------------------------------+
|      1 | server | 10.4.158.30:55839 | main | Sleep   |    3 |              | NULL                                                                                                 |  
|     19 | server | 10.4.158.30:56410 | main | Sleep   |  171 |              | NULL                                                                                                 |
|     43 | server | 10.4.158.30:57248 | main | Sleep   |   14 |              | NULL                                                                                                 |
|    580 | server | 10.4.158.30:64549 | main | Sleep   |   55 |              | NULL                                                                                                 |
| 113359 | server | 10.4.158.30:62121 | main | Sleep   |   55 |              | NULL                                                                                                 |
| 182369 | server | 10.4.158.30:56220 | main | Sleep   |   55 |              | NULL                                                                                                 |
| 188971 | server | 10.4.158.30:52060 | main | Sleep   |   87 |              | NULL                                                                                                 |
| 189274 | sqluser| 10.4.158.10:46480 | userdb    | Query   |  630 | Sending data | SELECT  SQL_CALC_FOUND_ROWS t1.phone_mobile, t1.device_id, t2.phone_mobile as  'reg_pin.PhoneMobile' |
| 189325 | sqluser| localhost         | NULL     | Query   |    0 | NULL         | show processlist                                                                                     |
+--------+----------+-------------------+----------+---------+------+--------------+------------------------------------------------------------------------------------------------------+

Нахожу Id процесса и удаляю его командой kill

1
2
mysql> kill 189274;
Query OK, 0 rows affected (0.00 sec)

Проверяю:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql> show processlist;
+--------+----------+-------------------+----------+---------+------+-------+------------------+
| Id     | User     | Host              | db       | Command | Time | State | Info             |
+--------+----------+-------------------+----------+---------+------+-------+------------------+
|      1 | server | 10.4.158.30:55839 | main | Sleep   |    0 |       | NULL             |
|      7 | server | 10.4.158.30:55920 | main | Sleep   |    0 |       | NULL             |
|     19 | server | 10.4.158.30:56410 | main | Sleep   |   44 |       | NULL             |
|     43 | server | 10.4.158.30:57248 | main | Sleep   |   13 |       | NULL             |
|    580 | server | 10.4.158.30:64549 | main | Sleep   |   13 |       | NULL             |
| 113359 | server | 10.4.158.30:62121 | main | Sleep   |  129 |       | NULL             |
| 182369 | server | 10.4.158.30:56220 | main | Sleep   |  129 |       | NULL             |
| 188971 | server | 10.4.158.30:52060 | main | Sleep   |  161 |       | NULL             |
| 189325 | sqluser| localhost         | NULL     | Query   |    0 | NULL  | show processlist |
+--------+----------+-------------------+----------+---------+------+-------+------------------+
9 rows in set (0.00 sec)

Запрос удален.

Подробнее о команде kill на официальном сайте: http://dev.mysql.com/doc/refman/5.5/en/kill.html

Статьи и новости схожей тематики:

Оставьте свой отзыв