SHOW PROCESSLIST에서 전체 쿼리를 보는 방법


296

SHOW PROCESSLIST 쿼리를 실행하면 실행중인 SQL 쿼리의 처음 100 자만 정보 열에 반환됩니다.

Mysql 구성을 변경하거나 다른 종류의 요청을 발행하여 완전한 쿼리를 볼 수 있습니까 (보고있는 쿼리가 100자를 초과합니다)

답변:


482
SHOW FULL PROCESSLIST

사용하지 않는 경우 FULL, "각 문장의 처음 100 개 문자가 표시됩니다 Info필드" .

phpMyAdmin을 사용할 때 잘린 결과를 보려면 "전체 텍스트"옵션 (결과 테이블의 왼쪽 상단 모서리에있는 "← T →")을 클릭해야합니다.


3
phpmyadmin은 이것에 신경 쓰지 않고 여전히 잘린 정보를 보여줍니다.
giorgio79

@ giorgio79 : 내가 올바르게 호출하면 phpMyAdmin은 모든 문자열 결과를 자릅니다. 그러나 웹 개발을 한 지 4 년이 지났기 때문에 오해를 일으킬 수 있습니다.
James McNellis

2
를 사용할 때조차도 특정 길이 후에 쿼리가 잘리는 것을보고 SHOW FULL PROCESSLIST있습니다. 어떻게 든 더 충만하게 만들 수 있습니까?
wizonesolutions 2009 년

명령 오른쪽 끝에 SHOW FULL PROCESSLIST세미콜론이 필요 ;합니까?
Rakibul Haq

1
@ R.Haq 만약 당신이 할 유일한 쿼리라면, 세미콜론은 필요하지 않습니다. 둘 이상의 쿼리를 수행하려면 각 쿼리 뒤에 세미콜론이 필요합니다.
Julio Garcia

85

Show Processlist는 다른 테이블에서 정보를 가져옵니다. 다음은 데이터를 가져 와서 전체 쿼리가 포함 된 'INFO'열을 보는 방법입니다.

select * from INFORMATION_SCHEMA.PROCESSLIST where db = 'somedb';

요구 사항에 따라 조건을 추가하거나 무시할 수 있습니다.

쿼리 결과는 다음과 같습니다.

+-------+------+-----------------+--------+---------+------+-----------+----------------------------------------------------------+
| ID    | USER | HOST            | DB     | COMMAND | TIME | STATE     | INFO                                                     |
+-------+------+-----------------+--------+---------+------+-----------+----------------------------------------------------------+
|     5 | ssss | localhost:41060 | somedb | Sleep   |    3 |           | NULL                                                     |
| 58169 | root | localhost       | somedb | Query   |    0 | executing | select * from sometable where tblColumnName = 'someName' |

12
아마도 가장 유용한 답일 것입니다.
dr_

내 정보 열에가 표시 COMMIT됩니다. 실제 검색어에 대한 자세한 내용을 볼 수있는 방법을 알고 있습니까?
m.spyratos

localhost : 41060, 41060은 무엇을 의미합니까? 어떤 추측?
Farveen Hassan

12

방금 MySQL 문서 에서 SHOW FULL PROCESSLIST기본적으로 현재 사용자 연결 의 스레드 만 나열 한다는 것을 읽었습니다 .

MySQL SHOW FULL PROCESSLIST 문서에서 인용하십시오.

PROCESS 권한이 있으면 모든 스레드를 볼 수 있습니다.

따라서 테이블 에서 Process_priv열을 활성화 할 수 있습니다 mysql.user. FLUSH PRIVILEGES나중에 실행해야합니다 :)


12

SHOW PROCESSLIST의 전체 쿼리보기 :

SHOW FULL PROCESSLIST;

또는

 SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;

10

쉘 세션에서 수동으로 상호 작용하지 않고 업데이트 된 프로세스 (예 : 2 초)를 계속 얻으려면 다음을 사용하십시오.

watch -n 2 'mysql -h 127.0.0.1 -P 3306 -u some_user -psome_pass some_database -e "show full processlist;"'

에 대한 유일한 나쁜 점은 show [full] processlist출력 결과를 필터링 할 수 없다는 것입니다. 반면에, SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST보고 싶지 않은 것을 출력에서 ​​제거 할 수 있는 열린 가능성을 발행 하십시오.

SELECT * from INFORMATION_SCHEMA.PROCESSLIST
WHERE DB = 'somedatabase'
AND COMMAND <> 'Sleep'
AND HOST NOT LIKE '10.164.25.133%' \G
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.