วิธีดูข้อความค้นหาแบบเต็มจาก SHOW PROCESSLIST


296

เมื่อฉันออกแบบสอบถาม SHOW PROCESSLIST เฉพาะ 100 ตัวแรกของแบบสอบถาม SQL ที่กำลังทำงานอยู่เท่านั้นที่จะถูกส่งกลับในคอลัมน์ข้อมูล

เป็นไปได้หรือไม่ที่จะเปลี่ยนการกำหนดค่า Mysql หรือออกคำขอประเภทอื่นเพื่อดูข้อความค้นหาที่สมบูรณ์ (ข้อความค้นหาที่ฉันค้นหามีความยาวเกิน 100 อักขระ)

คำตอบ:


482
SHOW FULL PROCESSLIST

หากคุณไม่ได้ใช้FULL, "เพียง 100 ตัวอักษรแรกของแต่ละคำสั่งจะแสดงในInfoช่อง"

เมื่อใช้ phpMyAdmin คุณควรคลิกที่ตัวเลือก "ข้อความแบบเต็ม" ("← T →" ที่มุมซ้ายบนของตารางผลลัพธ์) เพื่อดูผลลัพธ์ที่ไม่ถูกตัดทอน


3
ดูเหมือนว่า phpmyadmin ไม่สนใจเรื่องนี้และยังคงแสดงข้อมูลที่ถูกตัดทอน
giorgio79

@ giorgio79: ถ้าฉันจำได้ถูกต้อง phpMyAdmin จะตัดทอนผลลัพธ์สตริงทั้งหมด แม้ว่ามันจะเป็นเวลาสี่ปีแล้วที่ฉันทำการพัฒนาเว็บไซต์ใด ๆ ดังนั้นฉันจึงผิดพลาดได้เป็นอย่างดี
James McNellis

2
SHOW FULL PROCESSLISTฉันเห็นคำสั่งที่ได้รับการตัดทอนหลังจากความยาวบางแม้เมื่อมีการใช้ ฉันจะทำให้มันฟูขึ้นได้ไหม?
wizonesolutions

คำสั่งSHOW FULL PROCESSLISTต้องการเซมิโคลอน;ที่ส่วนท้ายใช่มั้ย
Rakibul Haq

1
@ R.Haq หากเป็นคำเดียวที่คุณจะทำเครื่องหมายอัฒภาคไม่จำเป็น หากคุณต้องการทำมากกว่าหนึ่งแบบสอบถามคุณจะต้องใช้เครื่องหมายอัฒภาคหลังจากแต่ละแบบสอบถาม
Julio Garcia

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 SHOW FULL PROCESSLIST:

หากคุณมีสิทธิ์ดำเนินการคุณสามารถเห็นกระทู้ทั้งหมด

ดังนั้นคุณสามารถเปิดใช้งาน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.