web-dev-qa-db-ja.com

実行中のMySQLクエリを停止するにはどうすればいいですか?

私は自分のLinuxシェルからmysqlに接続します。時々私は大きすぎるSELECTクエリを実行します。それは印刷して印刷し、私はすでにこれが私が意図したものではないことを知っています。クエリを中止したいのですが。

Ctrl+C(数回)を押すとmysqlを完全に殺してShellに戻るので、再接続する必要があります。

mysql自体を殺さずにクエリを停止することは可能ですか?

236
David B
mysql>show processlist;

mysql> kill "number from first col";
419
baklarz2048

追加するだけ

KILL QUERY **Id**ここで、Idはshow processlistからの接続IDです。

通常は、あるアプリケーションから実行しているときに接続を強制終了したくない場合は、これをお勧めします。

詳細については、mysqlのドキュメント をここで読むことができます

65
mtariq

mysqlに接続します

mysql -uusername -p  -hhostname

全プロセスリストを表示:

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)
38
minhas23

暴走クエリを殺すためにmysqladminを使用します。

以下のコマンドを実行してください。

mysqladmin -uusername -ppassword pr

それからプロセスIDを書き留めます。

mysqladmin -uusername -ppassword kill pid

暴走したクエリでリソースが消費されなくなりました。

12
minhas23

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
9
Rudy Lattae

あなたはプロセスを殺すために次のコマンドを実行する必要があります。

> show processlist;  
> kill query processId;

クエリパラメータは、クエリコマンドプロセスを強制終了する必要があることを指定します。

次のようにkillプロセスの構文

殺す[接続| QUERY] processlist_id

詳細については このリンクを参照してください

2
Shivam Kubde

この質問の著者は、通常、MySQLが出力を出力して初めて、間違ったクエリが実行されたことに気付くと述べています。前述のように、この場合、Ctrl-Cは役に立ちません。ただし、は現在のクエリを中止することに気付きました–キャッチした場合before出力が出力されます。例えば:

mysql> select * from jos_users, jos_comprofiler;

MySQLは上記の2つのテーブルのデカルト積の生成に忙しくなり、MySQLが画面に出力を出力していないことにすぐに気付きます(プロセスの状態はSending dataCtrl-Cと入力します:

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

Ctrl-Cは同様にUPDATEクエリを停止するために使用できます。

0