Jak zobaczyć pełne zapytanie z SHOW PROCESSLIST


296

Po wydaniu zapytania SHOW PROCESSLIST w kolumnie informacyjnej zwracane jest tylko pierwsze 100 znaków uruchomionego zapytania SQL.

Czy można zmienić konfigurację MySQL lub wysłać zapytanie innego rodzaju, aby zobaczyć pełne zapytanie (zapytania, na które patrzę, są dłuższe niż 100 znaków)

Odpowiedzi:


482
SHOW FULL PROCESSLIST

Jeśli nie użyjesz FULL, „w Infopolu pojawi się tylko pierwsze 100 znaków każdej instrukcji ” .

Korzystając z phpMyAdmin, powinieneś również kliknąć opcję „Pełny tekst” („← T →” w lewym górnym rogu tabeli wyników), aby zobaczyć nieskalowane wyniki.


3
Wygląda na to, że phpmyadmin nie dba o to i nadal wyświetla skrócone informacje.
giorgio79

@ giorgio79: Jeśli dobrze pamiętam, phpMyAdmin obcina wszystkie wyniki łańcucha. Minęły cztery lata, odkąd zajmowałem się tworzeniem stron internetowych, więc mogłem się bardzo mylić.
James McNellis

2
Widzę, że zapytania są obcinane po pewnym czasie, nawet podczas używania SHOW FULL PROCESSLIST. Czy mogę jakoś go jeszcze wypełnić?
wizonesolutions

polecenie SHOW FULL PROCESSLISTwymaga średnika ;na końcu, prawda?
Rakibul Haq

1
@ R.Haq Jeśli to jedyne zapytanie, które chcesz wykonać, średnik nie jest konieczny. Jeśli chcesz wykonać więcej niż jedno zapytanie, potrzebujesz średnika po każdym z nich.
Julio Garcia,

85

Pokaż listę procesów pobiera informacje z innej tabeli. Oto jak możesz pobrać dane i spojrzeć na kolumnę „INFO”, która zawiera całe zapytanie:

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

Możesz dodać dowolny warunek lub zignorować w zależności od wymagań.

Wynik zapytania jest uzyskiwany jako:

+-------+------+-----------------+--------+---------+------+-----------+----------------------------------------------------------+
| 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
To prawdopodobnie najbardziej przydatna odpowiedź.
dr_

Moja kolumna informacji pokazuje COMMIT. Czy wiesz, jak mogę wyświetlić więcej szczegółów na temat rzeczywistego zapytania?
m.spyratos

localhost: 41060, co oznacza 41060? jakieś pomysły ?
Farveen Hassan

12

Właśnie przeczytałem w dokumentacji MySQL, która SHOW FULL PROCESSLISTdomyślnie zawiera listę wątków z bieżącego połączenia użytkownika .

Cytat z dokumentacji MySQL SHOW FULL PROCESSLIST:

Jeśli masz uprawnienie PROCES, możesz zobaczyć wszystkie wątki.

Możesz więc włączyć Process_privkolumnę w swojej mysql.usertabeli. Pamiętaj, aby wykonać FLUSH PRIVILEGESpóźniej :)


12

Zobacz pełne zapytanie z SHOW PROCESSLIST:

SHOW FULL PROCESSLIST;

Lub

 SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;

10

Jeśli chcesz ciągle otrzymywać zaktualizowane procesy (na przykład 2 sekundy) w sesji powłoki bez konieczności ręcznej interakcji z nią, użyj:

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

Jedyną wadą show [full] processlistjest to, że nie można filtrować wyniku wyjściowego. Z drugiej strony, udostępnienie SELECT * FROM INFORMATION_SCHEMA.PROCESSLISTotwartych możliwości usunięcia z danych wyjściowych wszystkiego, czego nie chcesz widzieć:

SELECT * from INFORMATION_SCHEMA.PROCESSLIST
WHERE DB = 'somedatabase'
AND COMMAND <> 'Sleep'
AND HOST NOT LIKE '10.164.25.133%' \G
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.