2017-05-09 16 views
1

저는 초보자 인 MySQL과 SQL입니다. MySQL과 MyISAM 웹 사이트에서이 기술을 배우고 있습니다.`KILL QUERY` 명령의 목적은 무엇입니까?

지금 KILL 명령을 배우고 KILL CONNECTION을 사용하는 방법을 배웠습니다. 그러나 MySQL과 MyISAM 웹 사이트에서 KILL QUERY을 배울 때 그들은 단지 KILL QUERY에 대한 정보를 제공했는데, 지정된 연결 ID가 실행중인 쿼리를 종료합니다. 내가 SHOW PROCESSLIST 명령을 통해 다른 사용자의 접속 ID를 얻어서 KILL QUERY을 사용한 경우

다른 사용자 (안 날) INSERTDELETE 쿼리를 실행하지만, 그것은

쿼리 확인, 영향을받는 0 행 (0.01 초 말한다)

하지만 다른 사용자에게는 아무런 변화가 없습니다.

이 명령의 정확한 사용법을 알고 싶습니다. 이 KILL QUERY 명령의 목적은 무엇입니까? 아무도 말해 줄 수 있니?

+0

경쟁 조건이있는 일부 레거시 데이터베이스 프로세스가 있다고 가정 할 때마다 다른 사용자가 액세스해야하는 테이블/레코드가 잠겨 있기 때문에 사용자가 멈추는 쿼리를 실행할 것입니다. 락을 야기하는 원래의 문제 쿼리를 죽이기위한 메커니즘을 갖는 것은 모든 RDBMS에서 매우 중요합니다. – DanK

답변

2

몇 가지 유용한 포인터 :

How can I stop a running MySQL query?

당신은 연결을 죽일 여기 KILL 일부 선명도가 필요 MySQL Kill query

How to kill all processes for a Specific user

MySQL Manaul - Kill하지만 KILL QUERY만이 KIL 그 쿼리는 그 연결을 그대로 둡니다. 다른 사용자가 명령에 KILL QUERY를 사용하는 경우 자신의 쿼리가 당신의 킬 쿼리 명령보다 더 이상 위해 실행중인 경우 때문에 [가장] 쿼리가 느린 쿼리 것입니다, 그래서 만약

정말,이는 정말 눈에 띄는 될 수 있습니다 실행하고 닫으십시오. 따라서 다른 사용자의 쿼리를 KILL에 보내면 그 쿼리가 완료되어 어쨌든 닫힐 수 있습니다.

나는 이걸보고있는 것 같아서 닫히는 쿼리를 죽이고 을 죽이기 전에 명령을 실행할 수 있습니다.

킬링 쿼리는 (문헌에서) 느리고 오래 실행되는 쿼리에만 유용하며 위와 같은 이유가 분명해야합니다.


는 편집 :
는 (내 원래의 대답에 게시하려면이 준비를 한 후 관련이없는 것으로 그것을했다,하지만 인해 의견에 더욱 관련이있을 것 같다!MySQL Manual에서)

:

임베디드 서버는 단순히 호스트 응용 프로그램의 스레드 내에서 실행하기 때문에 당신은 임베디드 MySQL 서버 라이브러리 KILL을 사용할 수 없습니다. 그것은 자체의 연결 스레드를 생성하지 않습니다.

의견에 대한 귀하의 질문에 대답하기 위해 나는 당신이 kill 호출이 작동하지 않도록 MySQL을 임베디드 할 수 있다고 생각합니다.

+0

좋은 말씀에 감사드립니다. 나는 데이터베이스 테이블에 5000 레코드를 삽입 한 다음 세션 A에서 해당 테이블의 모든 5000 행을 검색하기 위해 SELECT 명령을 실행했으며 세션에서 A 레코드를 검색하는 동일한 순간에 세션에서 KILL QUERY 명령을 실행했습니다. B와 세션 A connection_id "Query OK, 0 rows affected (0.01 sec)"하지만 세션 A SELECT 쿼리는 여전히 쿼리를 죽이지 않고 레코드를 검색하고있었습니다. 사실 세션 A는 긴 쿼리를 실행 중입니다. 왜 그런 일이 일어날 수 있습니까? –

+0

@SunnyKhan 답변에 대한 업데이트를 추가했습니다. 만약 당신이 MySQL을 임베디드하지 않고 MySQL을 임베디드하고 있으며 여전히 프로세스를 죽이지 않는다고 확신한다면 왜 그렇게 될지 확신하지 못합니다. – Martin

+0

@SunnyKhan 또한 권한 일 수도 있습니다 문제에 대해서도 설정에 대해 충분히 알지 못해서 말할 수는 없지만 [이 링크] (http://stackoverflow.com/a/26659484/3536236)가 도움이 될 수 있습니까? – Martin