Как я могу остановить выполнение запроса MySQL?



подключиться к mysql из моей оболочки Linux. Время от времени я запускаю SELECT запрос, который слишком большой. Он печатает и печатает, и я уже знаю, что это не то, что я имел в виду. Я хотел бы остановить запрос.



удара Ctrl+C (пару раз) убивает mysql полностью и возвращает меня в оболочку, поэтому мне нужно снова подключиться.



можно ли остановить запрос, не убивая ?

720   6  

6 ответов:

mysql>show processlist;

mysql> kill "number from first col";

добавить

KILL QUERY **Id** где Id-это идентификатор соединения от show processlist

более предпочтителен, если вы не хотите, чтобы убить соединение, как правило, при запуске некоторых приложений.

для более подробной информации вы можете прочитать mysql doc здесь

подключение к mysql

mysql -uusername -p  -hhostname

показать полный processlist:

mysql> show full processlist;
+---------+--------+-------------------+---------+---------+------+-------+------------------+
| Id      | User   | Host              | db      | Command | Time | State | Info             |
+---------+--------+-------------------+---------+---------+------+-------+------------------+
| 9255451 | logreg | dmin001.ops:37651 | logdata | Query   |    0 | NULL  | show processlist |
+---------+--------+-------------------+---------+---------+------+-------+------------------+

убить конкретный запрос. Здесь id=9255451

mysql> kill 9255451;

Если вам отказано в разрешении, попробуйте этот SQL:

CALL mysql.rds_kill(9255451)

использовать mysqladmin чтобы убить беглый запрос:

выполните следующие команды:

mysqladmin -uusername -ppassword pr

затем запишите идентификатор процесса.

mysqladmin -uusername -ppassword kill pid

запрос runaway больше не должен потреблять ресурсы.

Если у вас mysqladmin доступен, вы можете получить список запросов с:

> mysqladmin -uUSERNAME -pPASSWORD pr

+-----+------+-----------------+--------+---------+------+--------------+------------------+
| Id  | User | Host            | db     | Command | Time | State        | Info             |
+-----+------+-----------------+--------+---------+------+--------------+------------------+
| 137 | beet | localhost:53535 | people | Query   | 292  | Sending data | DELETE FROM      |
| 145 | root | localhost:55745 |        | Query   | 0    |              | show processlist |
+-----+------+-----------------+--------+---------+------+--------------+------------------+

затем вы можете остановить процесс mysql, который размещает длительный запрос:

> mysqladmin -uUSERNAME -pPASSWORD kill 137

автор этого вопроса упоминает, что обычно это только после MySQL выводит свой вывод, что он понимает, что неправильный запрос был выполнен. Как уже отмечалось, в данном случае, Ctrl-C не помогает. Тем не менее, я заметил, что это отменяем текущий запрос – если вы ловите его до любой выход напечатанный. Например:

mysql> select * from jos_users, jos_comprofiler;

MySQL становится занятым созданием Декартового произведения вышеупомянутых двух таблиц и вы скоро заметите, что MySQL не печать любого вывода на экран (процесс государство-это передача данных) так ты типа Ctrl-C:

Ctrl-C -- sending "KILL QUERY 113240" to server ...
Ctrl-C -- query aborted.
ERROR 1317 (70100): Query execution was interrupted

Ctrl-C можно аналогичным образом использовать для остановки UPDATE запрос.

Comments

    Ничего не найдено.