クエリの結果が返ってこなくて困った経験はないでしょうか?ここでは、実行中クエリの確認方法と強制終了させる方法について紹介します。
目次
実行中クエリの確認
show processlist;
を実行すると、実行中クエリを確認できます。
mysql> show processlist;
+-----+------+--------------------+--------------+---------+------+--------------+------------------------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-----+------+--------------------+--------------+---------+------+--------------+------------------------------------+
| 243 | root | localhost | NULL | Query | 0 | starting | show processlist |
| 244 | root | 192.168.55.1:62642 | test | Sleep | 4 | | NULL |
| 245 | root | 192.168.55.1:62643 | test | Query | 9 | Sending data | SELECT * FROM `posts` LIMIT 0,1000 |
+-----+------+--------------------+--------------+---------+------+--------------+------------------------------------+
3 rows in set (0.00 sec)
SELECT * FROM posts LIMIT 0,1000
というクエリが実行中であることがわかります。
info
は上限100文字となっています。
クエリ全文を確認したいのであれば、show full processlist;
を実行します。
注意|すべてのクエリが表示されない
他のユーザーが実行したクエリも表示するには、 PROCESS権限
が必要です。PROCESS権限
の設定は、 mysql.user
テーブルの Process_priv
カラムで行われています。
mysql> SELECT User, Process_priv FROM mysql.user;
+---------------+--------------+
| User | Process_priv |
+---------------+--------------+
| root | Y |
| mysql.session | N |
| mysql.sys | N |
+---------------+--------------+
3 rows in set (0.00 sec)
実行中クエリの強制終了
kill プロセスID
でクエリを強制終了できます。
さきほどの、 SELECT * FROM posts LIMIT 0,1000
を強制終了させたいのであれば、以下のようにします。
mysql> kill 245;