SHOW PROCESSLIST से पूरी क्वेरी कैसे देखें


296

जब मैं SHOW PROCESSLIST क्वेरी जारी करता हूं, तो चल रहे SQL क्वेरी के केवल 100 वर्ण जानकारी कॉलम में वापस आ जाते हैं।

क्या मैसकल कॉन्फ़िगरेशन को बदलना संभव है या पूरी क्वेरी देखने के लिए एक अलग तरह का अनुरोध जारी करना है (जिन प्रश्नों को मैं देख रहा हूं वे 100 वर्णों से अधिक लंबे हैं)

जवाबों:


482
SHOW FULL PROCESSLIST

यदि आप उपयोग नहीं करते हैं FULL, तो "प्रत्येक कथन के केवल पहले 100 अक्षर Infoफ़ील्ड में दिखाए गए हैं "

PhpMyAdmin का उपयोग करते समय, आपको किसी परिणाम तालिका के ऊपरी बाएँ कोने पर "पूर्ण पाठ" विकल्प ("corner T →") पर भी क्लिक करना चाहिए।


3
ऐसा लगता है कि phpmyadmin इस बारे में परवाह नहीं करता है, और अभी भी छंटनी की जानकारी दिखाता है।
जियोर्जियो79

@ giorgio79: अगर मुझे सही याद है, तो phpMyAdmin सभी स्ट्रिंग परिणामों को काट देता है। हालांकि मुझे कोई भी वेब डेवलपमेंट करते हुए चार साल हो चुके हैं, इसलिए मुझसे बहुत अच्छी तरह से गलती हो सकती है।
जेम्स मैकनेलिस

2
मैं देख रहा हूँ प्रश्नों का उपयोग करते समय एक निश्चित लंबाई के बाद छोटा किया जा रहा है SHOW FULL PROCESSLIST। क्या मैं इसे किसी तरह पूर्ण भी बना सकता हूं?
विजास्पॉन्सिसेस

कमांड 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

लोकलहोस्ट: 41060, 41060 का क्या मतलब है? कोई अंदाजा ?
फरवीन हसन

12

मैंने अभी-अभी MySQL प्रलेखन में पढ़ा है कि SHOW FULL PROCESSLISTडिफ़ॉल्ट रूप से केवल आपके वर्तमान उपयोगकर्ता कनेक्शन से थ्रेड्स को सूचीबद्ध करता है ।

MySQL शो पूर्ण प्रक्रिया दस्तावेज से उद्धरण:

यदि आपके पास विशेषाधिकार है, तो आप सभी थ्रेड्स देख सकते हैं।

तो आप 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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.