Làm thế nào để xem toàn bộ truy vấn từ SHOW PROCESSLIST


296

Khi tôi đưa ra truy vấn SHOW PROCESSLIST, chỉ 100 ký tự đầu tiên của truy vấn SQL đang chạy được trả về trong cột thông tin.

Có thể thay đổi cấu hình Mysql hoặc đưa ra một loại yêu cầu khác để xem truy vấn hoàn chỉnh (các truy vấn tôi đang xem dài hơn 100 ký tự)

Câu trả lời:


482
SHOW FULL PROCESSLIST

Nếu bạn không sử dụng FULL, "chỉ 100 ký tự đầu tiên của mỗi câu lệnh được hiển thị trong Infotrường" .

Khi sử dụng phpMyAdmin, bạn cũng nên nhấp vào tùy chọn "Toàn văn" ("← T →" ở góc trên cùng bên trái của bảng kết quả) để xem kết quả không được ghi.


3
Có vẻ như phpmyadmin không quan tâm đến điều này và vẫn hiển thị thông tin bị cắt ngắn.
giorgio79

@ giorgio79: Nếu tôi nhớ chính xác, phpMyAdmin cắt ngắn tất cả các kết quả chuỗi. Tuy nhiên, đã bốn năm kể từ khi tôi thực hiện bất kỳ phát triển web nào, vì vậy tôi rất có thể bị nhầm lẫn.
James McNellis

2
Tôi thấy các truy vấn bị cắt ngắn sau một độ dài nhất định ngay cả khi sử dụng SHOW FULL PROCESSLIST. Tôi có thể làm cho nó thậm chí đầy đủ hơn bằng cách nào đó?
wizonesolutions

Lệnh SHOW FULL PROCESSLISTcần một dấu chấm phẩy ;ở cuối phải không?
Rakibul Haq

1
@ R.Haq Nếu đó là truy vấn duy nhất bạn sẽ thực hiện, thì dấu chấm phẩy là không cần thiết. Nếu bạn muốn thực hiện nhiều truy vấn, thì bạn cần có dấu chấm phẩy sau mỗi truy vấn đó.
Julio Garcia

85

Hiển thị danh sách quy trình lấy thông tin từ một bảng khác. Đây là cách bạn có thể kéo dữ liệu và xem cột 'INFO' chứa toàn bộ truy vấn:

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

Bạn có thể thêm bất kỳ điều kiện hoặc bỏ qua dựa trên yêu cầu của bạn.

Đầu ra của truy vấn được kết quả là:

+-------+------+-----------------+--------+---------+------+-----------+----------------------------------------------------------+
| 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
Đây có lẽ là câu trả lời hữu ích nhất.
dr_

Cột thông tin của tôi cho thấy COMMIT. Bạn có biết làm thế nào tôi có thể xem thêm chi tiết về truy vấn thực tế?
m.spyratos

localhost: 41060, 41060 là viết tắt của từ gì? có đoán được không?
Farveen Hassan

12

Tôi chỉ đọc trong tài liệu MySQL rằng SHOW FULL PROCESSLISTtheo mặc định chỉ liệt kê các luồng từ kết nối người dùng hiện tại của bạn .

Trích dẫn từ tài liệu PROCESSLIST của MySQL SHOW FULL:

Nếu bạn có đặc quyền PROCESS, bạn có thể xem tất cả các chủ đề.

Vì vậy, bạn có thể kích hoạt Process_privcột trong mysql.userbảng của bạn . Nhớ thực hiện FLUSH PRIVILEGESsau đó :)


12

Xem truy vấn đầy đủ từ SHOW PROCESSLIST:

SHOW FULL PROCESSLIST;

Hoặc là

 SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;

10

Nếu một người muốn tiếp tục nhận được các quy trình cập nhật (ví dụ: 2 giây) trên phiên shell mà không phải tương tác thủ công với nó, hãy sử dụng:

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

Điều tồi tệ duy nhất show [full] processlistlà bạn không thể lọc kết quả đầu ra. Mặt khác, ban hành các SELECT * FROM INFORMATION_SCHEMA.PROCESSLISTkhả năng mở để loại bỏ khỏi đầu ra bất cứ điều gì bạn không muốn thấy:

SELECT * from INFORMATION_SCHEMA.PROCESSLIST
WHERE DB = 'somedatabase'
AND COMMAND <> 'Sleep'
AND HOST NOT LIKE '10.164.25.133%' \G
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.