मुझे mysql धीमी क्वेरी लॉग के भीतर "लॉक टाइम" की व्याख्या कैसे करनी चाहिए?


12

मैं यह समझने की कोशिश कर रहा हूं कि हमारे MySQL धीमी क्वेरी लॉग पर दिखाई देने वाले प्रश्नों के लिए लॉक समय की सबसे अच्छी व्याख्या कैसे करें।

उदाहरण के लिए यदि किसी UPDATE क्वेरी में 10 सेकंड लॉक टाइम है। मुझे लगता है कि अद्यतन क्वेरी लॉक प्राप्त करने के बाद यह कुल समय है। भले ही यह पिछले चुनिंदा प्रश्नों के पूरा होने का इंतजार कर रहा हो, लेकिन स्वयं अद्यतन कार्रवाई को अंजाम नहीं दे रहा हो, लेकिन घड़ी को टिक करना चाहिए क्योंकि यह उन सभी सेलेक्ट प्रश्नों को लॉक कर रहा है जो UPDATE क्वेरी के बाद पंक्तिबद्ध हैं।

और सेलेक्ट क्वेरी क्वेरी के बारे में कैसे। कुछ चुनिंदा प्रश्नों के लॉक टाइम कैसे आते हैं? क्या ऐसा इसलिए है क्योंकि एक UPDATE क्वेरी है, इसलिए वे एक साथ एक टेबल लॉक कर रहे हैं।

जवाबों:


19

lock_timeधीमी क्वेरी लॉग में वास्तव में समय क्वेरी ताला इसे चलाने के लिए की जरूरत है हासिल करने के लिए इंतजार कर रहे खर्च की राशि है। उदाहरण के लिए, UPDATESक्वेरी को राइट लॉक की आवश्यकता होती है।

लॉकिंग आपके द्वारा तालिका में उपयोग किए जा रहे संग्रहण इंजन पर भी निर्भर करता है। लिखते समय, InnoDB पंक्ति-स्तरीय लॉकिंग का उपयोग करेगा और केवल उन पंक्तियों को लॉक करेगा जिन्हें परिवर्तित किया जा रहा है। MyISAM अपडेट / इंसर्ट / डिलीट पूरा होने तक पूरी टेबल को लॉक कर देगा।

MyISAM के लिए संपूर्ण तालिका का लॉक करना एक बड़ा कारण है, SELECTक्वेरीज़ का आपके धीमी क्वेरी लॉग में लॉक_टाइम होगा।

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