Loading...
MySQL 9.5 Reference Manual 9.5의 10.8.4 Obtaining Execution Plan Information for a Named Connection의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
명명된 connection에서 실행 중인 설명 가능한(statement를 EXPLAIN으로 분석할 수 있는) statement에 대한 실행 계획을 얻으려면 다음 statement를 사용합니다:
1EXPLAIN [options] FOR CONNECTION connection_id;
EXPLAIN FOR CONNECTION은 주어진 connection에서 현재 쿼리를 실행하는 데 사용 중인 EXPLAIN 정보를 반환합니다.
데이터(및 이를 지원하는 통계)의 변경 때문에, 동일한 쿼리 텍스트에 대해 EXPLAIN을 실행할 때와는 다른 결과를 생성할 수 있습니다.
이러한 동작 차이는 더 일시적인 성능 문제를 진단하는 데 유용할 수 있습니다.
예를 들어, 한 세션에서 실행 중인 statement가 완료되는 데 오랜 시간이 걸리는 경우, 다른 세션에서 EXPLAIN FOR CONNECTION을 사용하면 지연의 원인에 대한 유용한 정보를 얻을 수 있습니다.
_connection_id_는 INFORMATION_SCHEMA PROCESSLIST 테이블 또는 SHOW PROCESSLIST statement로부터 얻는 connection 식별자입니다.
PROCESS 권한이 있으면, 어떤 connection에 대해서도 해당 식별자를 지정할 수 있습니다.
그렇지 않으면, 자신의 connection에 대해서만 식별자를 지정할 수 있습니다.
모든 경우에, 지정된 connection의 쿼리를 설명하기에 충분한 권한을 가지고 있어야 합니다.
명명된 connection이 statement를 실행하고 있지 않으면 결과는 비어 있습니다.
그렇지 않으면, 명명된 connection에서 실행 중인 statement가 설명 가능할 때에만 EXPLAIN FOR CONNECTION이 적용됩니다.
여기에는 SELECT, DELETE, INSERT, REPLACE, 그리고 UPDATE가 포함됩니다.
(그러나 EXPLAIN FOR CONNECTION은 이러한 타입의 prepared statement에도 동작하지 않습니다.)
명명된 connection이 설명 가능한 statement를 실행 중이면, 출력은 그 statement 자체에 대해 EXPLAIN을 사용하여 얻을 수 있는 것과 동일합니다.
명명된 connection이 설명 가능하지 않은 statement를 실행 중이면 에러가 발생합니다.
예를 들어, EXPLAIN이 설명 가능하지 않으므로 현재 세션에 대한 connection 식별자를 지정할 수 없습니다:
1mysql> SELECT CONNECTION_ID(); 2+-----------------+ 3| CONNECTION_ID() | 4+-----------------+ 5| 373 | 6+-----------------+ 71 row in set (0.00 sec) 8 9mysql> EXPLAIN FOR CONNECTION 373; 10ERROR 1889 (HY000): EXPLAIN FOR CONNECTION command is supported 11only for SELECT/UPDATE/INSERT/DELETE/REPLACE
Com_explain_other 상태 변수는 EXPLAIN FOR CONNECTION statement가 실행된 횟수를 나타냅니다.
10.8.3 Extended EXPLAIN Output Format
10.8.5 Estimating Query Performance