programing

MySQL 쿼리 실행을 중지하려면 어떻게 해야 합니까?

goodjava 2022. 10. 23. 21:28

MySQL 쿼리 실행을 중지하려면 어떻게 해야 합니까?

접속처mysql사용할 수 있습니다.가끔 저는 이 프로그램을SELECT너무 큰 쿼리입니다.인쇄도 하고 인쇄도 하고 내 말은 그게 아니란 걸 이미 알고 있어.질문을 중지하고 싶습니다.

때리다Ctrl+C(두세 번) 살인하다mysql완전히 날 셸로 데려가서 다시 연결해야 해

살인하지 않고 질의를 멈출 수 있나요?mysql그 자체?

mysql> show processlist;
+----+------+-----------+-----+---------+------+---------------------+------------------------------+----------+
| Id | User | Host      | db  | Command | Time | State               | Info                         | Progress |
+----+------+-----------+-----+---------+------+---------------------+------------------------------+----------+
| 14 | usr1 | localhost | db1 | Query   |    0 | starting            | show processlist             |    0.000 |
| 16 | usr1 | localhost | db1 | Query   |   94 | Creating sort index | SELECT  `tbl1`.* FROM `tbl1` |    0.000 |
+----+------+-----------+-----+---------+------+---------------------+------------------------------+----------+
2 rows in set (0.000 sec)

mysql> kill 16;
Query OK, 0 rows affected (0.004 sec)

mysql> show processlist;
+----+------+-----------+-----+---------+------+----------+------------------+----------+
| Id | User | Host      | db  | Command | Time | State    | Info             | Progress |
+----+------+-----------+-----+---------+------+----------+------------------+----------+
| 14 | usr1 | localhost | db1 | Query   |    0 | starting | show processlist |    0.000 |
+----+------+-----------+-----+---------+------+----------+------------------+----------+
1 row in set (0.000 sec)

덧붙이기 위해서

KILL QUERY **Id**여기서 Id는 접속 ID입니다.show processlist

는, 통상, 일부의 애플리케이션으로부터 실행할 때에 접속을 종료하지 않는 경우에 적합합니다.

자세한 내용은 mysql 문서를 참조하십시오.

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)

사용하다mysqladmin런어웨이 쿼리를 종료하려면:

다음 명령을 실행합니다.

mysqladmin -uusername -ppassword pr

다음으로 프로세스 ID를 적어 둡니다.

mysqladmin -uusername -ppassword kill pid

런어웨이 쿼리는 더 이상 리소스를 소비하지 않습니다.

가지고 계신 경우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

프로세스를 종료하려면 다음 명령을 실행해야 합니다.죽이려는 프로세스의 ID를 찾습니다.

> show processlist;

id 열에서 값을 가져와서 다음 명령을 실행합니다.

kill query <processId>;

Query 파라미터는 쿼리 명령어프로세스를 종료해야 함을 지정합니다.

Kill 프로세스의 구문은 다음과 같습니다.

KILL [CONNECTION | QUERY]프로세스 list_id

자세한 내용은 이 링크를 참조하십시오.

이 질문의 작성자는 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문의합니다.

언급URL : https://stackoverflow.com/questions/3787651/how-can-i-stop-a-running-mysql-query