13.7.6.4 KILL 구문
KILL [CONNECTION | QUERY] processlist_id
mysqld에 각 연결은 별도의 스레드에서 실행됩니다. 스레드는 KILL
문에서 강제 종료 할 수 있습니다. processlist_id
스레드 프로세스 목록 식별자는 INFORMATION_SCHEMA.PROCESSLIST
테이블의 ID
컬럼, SHOW PROCESSLIST
출력의 Id
컬럼 및 성능 스키마 threads
테이블 PROCESSLIST_ID
컬럼에서 확인할 수 있습니다. 현재의 thread의 값은 CONNECTION_ID()
함수에 의해 반환됩니다.
KILL
는 옵션 CONNECTION
또는 QUERY
규정이 허용됩니다.
KILL CONNECTION
는 규정되지 않은KILL
과 같습니다. 이것은 지정된processlist_id
에 연결된 연결을 종료합니다.KILL QUERY
연결이 현재 실행중인 문을 닫습니다 그 연결 자체는 그대로 둡니다.
PROCESS
권한이있는 경우는 모든 스레드를 볼 수 있습니다. SUPER
권한이있는 경우는 모든 스레드와 문을 강제 종료 할 수 있습니다. 그렇지 않은 경우에는 사용자 고유의 스레드와 문만을 표시 및 강제 종료 할 수 있습니다.
mysqladmin processlist 및 mysqladmin kill 명령을 사용하여 스레드를 검사 및 강제 종료 할 수 있습니다.
임베디드 서버는 호스트 응용 프로그램의 스레드 내부에서만 실행되지 않기 때문에 내장 MySQL Server 라이브러리에서는 KILL
을 사용할 수 없습니다. 자신의 연결 스레드가 생성되지 않습니다.
KILL
을 사용하면 그 쓰레드의 고유 종료 플래그가 설정됩니다. 강제 종료 플래그는 다음 일정한 간격으로 밖에 확인되지 않기 때문에 대부분의 경우 스레드가 종료 될 때까지 어느 정도 시간이 걸릴 수 있습니다.
SELECT
작업 중에ORDER BY
와GROUP BY
루프에서는이 플래그는 행 블록 읽기 후에 체크됩니다. 강제 종료 플래그가 설정되어있는 경우,이 문은 중단됩니다.ALTER TABLE
작업 중에 강제 종료 플래그는 원래 테이블에서 각 행 블록을 읽기 전에 확인됩니다. 강제 종료 플래그가 설정되어 있다면,이 문은 중단되고 임시 테이블이 삭제됩니다.UPDATE
또는DELETE
작업 중에 강제 종료 플래그는 블록을 읽을 때마다, 그리고 행이 갱신 또는 삭제 될 때마다 확인됩니다. 강제 종료 플래그가 설정되어있는 경우,이 문은 중단됩니다. 트랜잭션을 사용하지 않는 경우에는 변경이 롤백되지 않습니다.GET_LOCK()
은 중단되고NULL
을 반환합니다.INSERT DELAYED
스레드는 메모리에있는 모든 행을 빠르게 플래시 (삽입)하고 종료합니다.이 스레드가 테이블 잠금 핸들러 내에있는 경우 (상태 :
Locked
) 그 테이블 잠금이 빨리 중지됩니다.이 thread가 기입 통화에서 디스크 공간을 대기하고있는 경우, 그 기록은 "디스크 공간 부족"오류 메시지에서 중지됩니다.
MyISAM
테이블에 REPAIR TABLE
또는 OPTIMIZE TABLE
작업을 종료하면 테이블이 손상 사용할 수 없습니다. 이러한 테이블에 대한 읽기 또는 쓰기는 모든 테이블을 다시 최적화하거나 복구 할 때까지 실패합니다 (인터럽트 없음).