[MySQL] KILL 명령

■ KILL 명령어

KILL [CONNECTION | QUERY] processlist_id

mysqld 대한 연결은 별도의 스레드에서 실행됩니다. KILL processlist_id 문으로 스레드를 강제 종료 있습니다.

 

스레드 프로세스 목록 식별자는 INFORMATION_SCHEMA PROCESSLIST 테이블의 ID 컬럼, SHOW PROCESSLIST 출력의 ID컬럼 성능 스키마 스레드 테이블의 PROCESSLIST_ID 컬럼에서 확인할 있습니다. 현재 스레드의 값은 CONNECTION_ID () 함수에 의해 리턴됩니다.

 

KILL 선택적 CONNECTION 또는 QUERY 수정자를 허용합니다.

+ KILL CONNECTION 수정자가 없는 KILL 같습니다. 연결이 실행중인 명령문을 종료한 주어진 processlist_id 연관된 연결을 종료합니다.

+ KILL QUERY 연결이 현재 실행중인 명령문을 종료하지만 연결 자체는 그대로 둡니다.

 

종료 있는 스레드를 확인하는 기능은 PROCESS 권한에 따라 다릅니다.

+ PROCESS 없으면 자신만의 스레드만 있습니다.

+ PROCESS 사용하면 모든 스레드를 있습니다.

 

스레드와 명령문을 종료하는 기능은 SUPER 권한에 따라 다릅니다.

+ SUPER 없으면 자신의 스레드와 문장만 죽일 있습니다.

+ SUPER 사용하면 모든 스레드와 명령문을 종료할 있습니다.

 

mysqladmin processlist mysqladmin kill 명령을 사용하여 스레드를 검사하고 종료할 수도 있습니다.

 

참고사항

내장 서버는 호스트 응용 프로그램의 스레드 내에서만 실행되므로 내장 MySQL 서버 라이브러리에서 KILL 사용할 없습니다. 자체 연결 스레드를 만들지 않습니다.

 

KILL 사용하면 특정 스레드의 플래그가 스레드에 설정됩니다. 대부분의 경우 kill 플래그가 특정 간격으로만 검사되므로 스레드가 죽는 약간의 시간이 걸릴 있습니다.

+ ORDER BY GROUP BY 루프에 대해 SELECT 조작 중에 블록을 읽은 플래그가 점검됩니다. kill 플래그가 설정되면 명령문이 중단됩니다.

+ 테이블 복사를 수행하는 ALTER TABLE 조작은 원래 테이블에서 읽은 개의 복사된 행마다 주기적으로 kill 플래그를 점검합니다. kill 플래그가 설정되면 명령문이 중단되고 임시 테이블이 삭제됩니다.

+ KILL 문은 확인을 기다리지 않고 리턴되지만 플래그 검사는 상당히 적은 시간 내에 조작을 중단합니다. 필요한 정리를 수행하기 위해 작업을 중단하는 데에도 시간이 걸립니다.

+ UPDATE 또는 DELETE 조작 중에, 플래그는 블록을 읽은 그리고 갱신되거나 삭제된 후에 점검됩니다. kill 플래그가 설정되면 명령문이 중단됩니다. 트랜잭션을 사용하지 않으면 변경 사항이 롤백되지 않습니다.

+ GET_LOCK () 중단되고 NULL 반환합니다.

+ 스레드가 테이블 잠금 핸들러 (상태 : 잠금) 있으면 테이블 잠금이 빠르게 중단됩니다.

+ 쓰레드가 쓰기 호출에서 디스크 여유 공간을 기다리는 중이면 "disk full"오류 메시지와 함께 쓰기가 중단됩니다.

 

경고

MyISAM 테이블에서 REPAIR TABLE 또는 OPTIMIZE TABLE 작업을 종료하면 테이블이 손상되어 사용할 없게됩니다. 이러한 테이블에 대한 읽기 또는 쓰기는 중단없이 다시 최적화하거나 복구 때까지 실패합니다.

'Databases > MySQL' 카테고리의 다른 글

[MySQL] SHOW ENGINE과 SHOW ENGINES 명령  (0) 2020.10.17
[MySQL] Prepared 명령  (0) 2020.10.15
[MySQL] Flush 명령  (0) 2020.10.07
[MySQL] Bulk Data Loading for InnoDB Tables  (0) 2020.09.27
[MySQL] innodb_autoinc_lock_mode 환경  (0) 2020.09.24

Designed by JB FACTORY