Як побачити повний запит від SHOW PROCESSLIST


296

Коли я видаю запит SHOW PROCESSLIST, у першому стовпчику інформації повертаються лише перші 100 символів запущеного SQL-запиту.

Чи можна змінити конфігурацію Mysql або подати інший тип запиту, щоб побачити повний запит (запити, які я переглядаю, довші 100 символів)

Відповіді:


482
SHOW FULL PROCESSLIST

Якщо ви не використовуєте FULL, "у полі відображаються лише перші 100 символів кожного твердження Info" .

Використовуючи phpMyAdmin, ви також повинні натиснути на опцію "Повні тексти" ("← T →" у верхньому лівому куті таблиці результатів), щоб побачити невпорядковані результати.


3
Здається, phpmyadmin про це не піклується, і все ще показує усічену інформацію.
giorgio79

@ giorgio79: Якщо я пам'ятаю правильно, phpMyAdmin обрізає всі результати рядків. Хоча минуло чотири роки, як я займався будь-якою веб-розробкою, тож я дуже міг помилитися.
Джеймс Мак-Нілліс

2
Я бачу, як запити обрізаються після певної довжини навіть під час використання SHOW FULL PROCESSLIST. Чи можу я зробити її якось повніше?
wizonesolutions

команда SHOW FULL PROCESSLISTпотребує крапки з комою ;в кінці так?
Ракібул Хак

1
@ R.Haq Якщо це єдиний запит, який ви збираєтеся робити, то крапка з комою не потрібна. Якщо ви хочете виконати більше одного запиту, то вам знадобиться крапка з комою після кожного з них.
Хуліо Гарсія

85

Показати список списку процесорів отримує інформацію з іншої таблиці. Ось як ви можете отримати дані та переглянути колонку '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 ПОКАЗНИТИ ПОВНИЙ ПРОЦЕССІСТ:

Якщо у вас є права PROCESS, ви можете побачити всі потоки.

Таким чином, ви можете ввімкнути Process_privстовпчик у своїй mysql.userтаблиці. Не забудьте виконати FLUSH PRIVILEGESпісля цього :)


12

Дивіться повний запит від ПОКАЗНИКА ПРОЦЕСЛІСТА:

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.