Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 실행 중인 쿼리를 중지하는 방법

쿼리 중지 전 프로세스 목록 확인

MySQL에서 실행 중인 쿼리를 중지하기 전에, 먼저 show 명령어를 사용하여 현재 몇 개의 프로세스가 실행되고 있는지 확인해야 합니다.

프로세스 목록을 확인하는 쿼리는 다음과 같습니다.

mysql> show processlist;

위 쿼리를 실행하면 각 프로세스의 ID가 포함된 결과를 얻을 수 있습니다.

+----+-----------------+-----------------+----------+---------+-------+------------------------+------------------+
| Id | User            | Host            | db       | Command | Time  | State                  | Info             |
+----+-----------------+-----------------+----------+---------+-------+------------------------+------------------+
|  4 | event_scheduler | localhost       | NULL     | Daemon  | 71034 | Waiting on empty queue | NULL             |
|  8 | Manish          | localhost:53496 | business | Query   |     0 | starting               | show processlist |
+----+-----------------+-----------------+----------+---------+-------+------------------------+------------------+
2 rows in set (0.00 sec)

rds_kill 명령으로 쿼리 중지하기

위 출력 결과에서 현재 사용 중인 데이터베이스는 'business'이며, 해당 프로세스의 ID는 8입니다. 쿼리를 중지하려면 프로세스 목록에 표시된 ID를 인자로 하여 call 명령을 사용하면 됩니다. 기본 문법은 다음과 같습니다.

call mysql.rds_kill(valueOfGivenIdInProcesslist);

이제 위 문법을 실제 쿼리에 적용하고, valueOfGivenIdInProcesslist 자리에 8을 입력하면 다음과 같습니다.

mysql> CALL mysql.rds_kill(8);

위 쿼리를 실행하면 다음과 같은 출력이 나타납니다.

ERROR 2013 (HY000): Lost connection to MySQL server during query

이 오류 메시지는 대상 쿼리가 정상적으로 중지되었기 때문에 발생하는 것입니다. 즉, 연결이 강제로 종료되면서 클라이언트와 서버 간의 연결이 끊긴 상태를 의미합니다.

쿼리 중지 여부 확인하기

use 명령어를 사용하여 쿼리가 실제로 중지되었는지 확인할 수 있습니다. 기본 문법은 다음과 같습니다.

use yourDatabaseName;

위 문법을 시스템의 데이터베이스 이름 'business'에 적용한 쿼리는 다음과 같습니다.

mysql> use business;

위 쿼리를 실행하면 다음과 같은 출력이 나타납니다.

No connection. Trying to reconnect...
Connection id:    10
Current database: *** NONE ***



Database changed
mysql>

"Trying to reconnect..."라는 메시지가 출력되는 것으로 보아 쿼리가 성공적으로 중지되었음을 알 수 있습니다. 또한 현재 데이터베이스가 "none"으로 표시되는데, 이는 기존 연결이 종료되고 새로운 연결(ID 10)이 생성되었기 때문입니다. 잠시 후에는 데이터베이스와의 연결이 자동으로 복구되어 정상적인 작업을 계속 진행할 수 있습니다.