जब MySQL "डेटा भेज रहा है" तो इसका क्या मतलब है?


163

क्या मतलब है अगर Mysql क्वेरी:

SHOW PROCESSLIST;

राज्य कॉलम में "डेटा भेजना" देता है?

मुझे लगता है कि इसका मतलब है कि क्वेरी को निष्पादित किया गया है और MySQL क्लाइंट को "परिणाम" डेटा भेज रहा है, लेकिन मैं सोच रहा हूं कि इसका इतना समय (एक घंटे तक) क्यों ले रहा है।

धन्यवाद।


1
इसका मतलब है कि यह अपनी प्रक्रिया से डेटा को ग्राहक तक पहुंचा रहा है। यदि आप Sending dataएक ऐसे कदम के रूप में देख रहे हैं जो आपके चलने के बाद समय लेता है SHOW PROFILEतो वास्तव में उपभोग किया गया समय कदम से पहले का है।
एनबी

दुर्भाग्य से मैं एक संदेश लेता हूं, 'SHOW PROFILE' सुविधा अक्षम है, मुझे MySQL को 'सक्षम-प्रोफाइलिंग' के साथ निर्मित करना है। लेकिन आपकी प्रतिक्रिया के लिए धन्यवाद।
user1345414

और यह अतिरिक्त सवाल है। क्वेरी पहले ही आंतरिक रूप से समाप्त हो गई है, क्या यह नेटवर्क या बस जैसे ट्रांसमिशन के लिए संसाधनों की बात है?
user1345414

3
नहीं, आप सुन नहीं रहे हैं .. जो कारण है कि Sending dataसमय लेने के रूप में दिखाता है क्योंकि यह एक MySQL प्रोफाइलिंग बग है, वहां दिखाया गया समय पहले वाले चरण से संबंधित है, जो कि होना चाहिए Executing queryया कुछ इसी तरह का होना चाहिए । इसका मतलब यह है कि आपकी क्वेरी को निष्पादित होने में समय लगता है। Sending dataजब तक आप सैकड़ों मेगाबाइट डेटा स्ट्रीम नहीं करते, तब तक कदम आम तौर पर तेज़ होता है।
एनबी

3
शायद उस सवाल का नाम बदलकर "व्हाट्सएप डाटा भेजना" स्टेट का मतलब MySQL में हो सकता है। सवाल ढूंढना आसान हो जाएगा।
एंटीटॉक्सिक

जवाबों:


249

यह काफी भ्रामक स्थिति है। इसे "डेटा पढ़ना और फ़िल्टर करना" कहा जाना चाहिए।

इसका मतलब है कि MySQLडिस्क (या मेमोरी) पर कुछ डेटा संग्रहीत है जिसे पढ़ा और भेजा जाना बाकी है। यह स्वयं तालिका, एक सूचकांक, एक अस्थायी तालिका, एक क्रमबद्ध आउटपुट आदि हो सकता है।

यदि आपके पास 1M रिकॉर्ड तालिका (एक इंडेक्स के बिना) है जिसमें आपको केवल एक रिकॉर्ड की आवश्यकता है, तब MySQLभी तालिका को स्कैन करते समय "डेटा भेजना" के रूप में स्थिति का उत्पादन करेगा, इस तथ्य के बावजूद कि यह अभी तक कुछ भी नहीं भेजा है।


12
प्रलेखन आगे बताते हैं कि कि तर्क समय डिस्क का उपयोग कर के एक बहुत की वजह से सबसे अधिक संभावना है: dev.mysql.com/doc/refman/5.0/en/general-thread-states.html
मैथ्यू कोल्ब

4
और क्या होगा यदि MySQL 99% CPU का उपयोग करते हुए "डेटा भेज रहा है", बहुत कम डिस्क I / O के साथ?
रस्टीक्स

@RustyX कैसे डेटा पहले से ही रैम में बफर में मौजूद है और यह कुछ 100k या 1M की पंक्तियों को छांट रहा है?
15

23

इस राज्य में:

थ्रेड एक सेलेक्ट स्टेटमेंट के लिए पंक्तियों को पढ़ रहा है और प्रोसेस कर रहा है , और क्लाइंट को डेटा भेज रहा है।

क्योंकि इस अवस्था के दौरान होने वाले ऑपरेशन बड़ी मात्रा में डिस्क एक्सेस (रीड) करते हैं

इसीलिए इसे पूरा करने में अधिक समय लगता है और किसी दिए गए क्वेरी के जीवनकाल में सबसे लंबे समय तक चलने वाला राज्य है

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