Как я могу остановить выполнение запроса MySQL?
подключиться к mysql из моей оболочки Linux. Время от времени я запускаю SELECT запрос, который слишком большой. Он печатает и печатает, и я уже знаю, что это не то, что я имел в виду. Я хотел бы остановить запрос.
удара Ctrl+C (пару раз) убивает mysql полностью и возвращает меня в оболочку, поэтому мне нужно снова подключиться.
можно ли остановить запрос, не убивая ?
6 ответов:
добавить
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