वास्तविक MySQL क्वेरी समय को मापने


79

बिना लॉक रिलीज आदि के इंतजार के समय को मापने के बिना मैं किसी क्वेरी के निष्पादन समय को कैसे माप सकता हूं? मेरा एकमात्र विचार लगातार एक ही क्वेरी को मापना और सबसे तेज समय रिकॉर्ड करना था।

जवाबों:


149

प्रोफाइलर के साथ शुरू करो

SET profiling = 1;

फिर अपनी क्वेरी निष्पादित करें।

साथ में

SHOW PROFILES;

आप उन प्रश्नों की सूची देखते हैं जिनके लिए प्रोफाइलर के पास आंकड़े हैं। और अंत में आप चुनते हैं कि किस प्रश्न की जांच करनी है

SHOW PROFILE FOR QUERY 1;

या आपकी क्वेरी में जो भी संख्या हो।

आपको जो मिलता है वह एक सूची है जहां क्वेरी के दौरान वास्तव में कितना समय बिताया गया था।

मैनुअल में अधिक जानकारी


यह उत्कृष्ट है! क्या आप जानते हैं कि क्या यह धीमा है? यानी मैं इसे अपने रैपर क्लास में जोड़ सकता हूं, ताकि मेरी वेबसाइट पर चलने वाली हर क्वेरी के लिए निष्पादित किया जा सके?
मिखाइल

3
उसके बारे में कभी नहीं सोचा। आप ऐसा क्यों करना चाहते हो? आमतौर पर यह सिर्फ विकास के लिए है, मुझे लगता है। यदि आप जानना चाहते हैं कि कौन से क्वेरीज़ धीमी हैं, तो आपकी धीमी-क्वेरी-लॉग में एक नज़र है। dev.mysql.com/doc/refman/5.1/en/slow-query-log.html
फैंसीपे

क्योंकि प्रश्न अलग-अलग उपयोगकर्ताओं के लिए अलग-अलग समय लेते हैं। धीमी गति से क्वेरी-लॉग एक लॉक रिलीज के लिए इंतजार कर रहे समय की गणना करने के लिए लगता है
मिखाइल

1
वास्तव में सच नहीं है। लॉक की प्रतीक्षा करना भी किसी अन्य क्वेरी के धीमे होने के लिए सिर्फ एक सहानुभूति है। मेरा सुझाव है, प्रश्नों को अपनी धीमी-क्वेरी-लॉग में चुनें, उन्हें प्रोफाइलर के साथ चलाकर देखें कि उन्होंने इतना समय कहाँ बिताया। फिर, यदि संभव हो, तो उन्हें सुधारें। तदनुसार अनुक्रमित जोड़ें, उन्हें फिर से लिखें, या यदि पढ़ा गया डेटा बहुत कम समय खर्च करता है, तो उसे फिर से लिखें sending data। या जो कुछ भी यह प्रदर्शन में सुधार करने के लिए लेता है। मुझे उपयोगकर्ताओं को यह बताने में कोई मतलब नहीं है कि उन्हें इतना लंबा इंतजार क्यों करना पड़ा। वे वास्तव में परवाह नहीं करते।
फैंसीपैंट

मेरा मतलब उपयोगकर्ताओं को प्रोफाइलिंग के परिणामों को प्रदर्शित करना नहीं था। मैं बस इसे जीना चाहता था और अपने उद्देश्यों के लिए स्टोर करना चाहता था
मिखाइल

37

स्वीकृत उत्तर अमान्य हो रहा है ...

SHOW PROFILE[S]कर रहे हैं MySQL 5.6.7 के रूप में पदावनत और एक भविष्य MySQL रिलीज में हटा दिया जाएगा। इसके बजाय प्रदर्शन स्कीमा का उपयोग करें; http://dev.mysql.com/doc/refman/5.6/en/performance-schema-query-profit.html देखें


2
यदि प्रोफ़ाइल आपको "डेटा भेजने" से अधिक उपयोगी कुछ देता है, तो आप लॉटरी जीतते हैं।
रिक जेम्स

1
मैं 5.7.19 का उपयोग कर रहा हूं और अभी भी show profilesठीक से काम कर रहा हूं
शिव प्रवीण

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