Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL डेटाबेस में धीमी क्वेरी (धीमी क्वेरी लॉग) की लॉगिंग सक्षम करें

तेज़ वेब सर्वर के लिए मुख्य आवश्यकताओं में से एक कुशल और प्रभावी SQL कथन या क्वेरीज़ को अनुकूलित करना है। कोई भी गैर-इष्टतम SQL (स्ट्रक्चर्ड क्वेरी लैंग्वेज) कमांड या स्टेटमेंट जो निष्पादित होने में बहुत लंबा या लंबा समय लेता है, बहुत सारे सिस्टम संसाधनों का उपयोग करेगा, जिससे MySQL डेटाबेस धीमा चल सकता है, और फिर अधिक से अधिक क्वेरी बैकलॉग कतार में आ जाती हैं, और जब कनेक्शन की सीमा समाप्त हो गई है, आगंतुकों को अस्वीकार कर दिया गया है या कनेक्शन से इनकार कर दिया गया है। सबसे खराब स्थिति में, आपका वेब सर्वर भी नीचे चला जाएगा, या लगातार खराब प्रदर्शन करेगा। मामला विशेष रूप से सच है जब आप MyISAM तालिका प्रकार का उपयोग कर रहे हैं जो उच्च ट्रैफ़िक वेबसाइट में पंक्ति-स्तरीय लॉकिंग के बजाय तालिका-स्तरीय लॉकिंग का उपयोग करता है।

कभी-कभी, एक एकल SQL क्वेरी सर्वर की सभी समस्याओं का कारण हो सकती है। MySQL में धीमी क्वेरी लॉग को कैप्चर करने या उन प्रश्नों की पहचान करने के लिए अंतर्निहित कार्यक्षमता है जो इष्टतम नहीं हैं और समाप्त होने में लंबा समय लेते हैं, जो आपको सभी धीमी गति से चलने वाले प्रश्नों को लॉग करने की अनुमति देता है, जो MySQL डेटाबेस इंजन द्वारा निष्पादित करने के लिए निर्धारित संख्या में सेकंड लेता है। फ़ाइल। धीमी क्वेरी लॉग सक्रिय नहीं है या डिफ़ॉल्ट रूप से MySQL स्थापना पर है, इस प्रकार यह कम उपयोग किए गए लॉग में से एक है।

धीमी क्वेरी लॉग को सक्षम करने के लिए, बस निम्न पंक्ति को MySQL कॉन्फ़िगरेशन फ़ाइल (my.cnf या my.ini) में जोड़ें, और फिर MySQL सर्वर को पुनरारंभ करें:

log-slow-queries

या,

log-slow-queries = [path to the log file]

बदलें [लॉग फ़ाइल का पथ] धीमी क्वेरी लॉग फ़ाइल के वास्तविक पथ के साथ आप चाहते हैं कि MySQL लॉग को लिखे, जो कि वैकल्पिक मान है।

या आप –log-slow-queries[=file_name] के साथ mysqld शुरू कर सकते हैं धीमी क्वेरी लॉग को सक्षम करने का विकल्प। दोनों सिंटैक्स में, यदि कोई लॉग फ़ाइल नाम निर्दिष्ट नहीं है, तो डिफ़ॉल्ट नाम host_name है -slow.log, MySQL डेटा फ़ाइल निर्देशिका में संग्रहीत। यदि कोई फ़ाइल नाम दिया गया है, लेकिन पूर्ण पथनाम के रूप में नहीं, तो सर्वर फ़ाइल को डेटा निर्देशिका में भी लिखता है।

धीमी क्वेरी लॉग को सक्षम करने के बाद, MySQL उन सभी SQL कथनों के साथ लॉग फ़ाइल बनाएगा, कैप्चर करेगा और लॉग करेगा जिसमें long_query_time से अधिक समय लगा था। निष्पादित करने के लिए सेकंड, जो डिफ़ॉल्ट रूप से 10 सेकंड . पर सेट होता है . प्रारंभिक टेबल लॉक प्राप्त करने का समय निष्पादन समय के रूप में नहीं गिना जाता है। mysqld धीमी क्वेरी लॉग को निष्पादित होने के बाद और सभी ताले जारी होने के बाद एक बयान लिखता है, इसलिए लॉग ऑर्डर निष्पादन आदेश से अलग हो सकता है।

फिर आप लॉग फ़ाइल में सभी धीमी SQL क्वेरी की जाँच कर सकते हैं, और फिर SQL कथनों को अनुकूलित करने के लिए आवश्यक कदम उठा सकते हैं। धीमी क्वेरी लॉग आपको बताएगा कि क्वेरी को पूरा करने में कितना समय लगा, क्वेरी को चलने में कितना समय लगा, इसके ताले को सुरक्षित करने में कितना समय लगा, परिणामस्वरूप कितनी पंक्तियों को वापस भेजा गया, यह निर्धारित करने के लिए कितनी पंक्तियों की जांच की गई परिणाम, किस डेटाबेस का उपयोग किया गया था, और वास्तविक क्वेरी ही। लेकिन ध्यान रखें कि लॉग में निहित एक SQL क्वेरी पहले से ही इष्टतम हो सकती है, लेकिन सिस्टम संसाधनों के कारण धीरे-धीरे निष्पादित किया जाता है, वास्तविक धीमे स्टेटमेंट द्वारा उपयोग किया जाता है जिसे ठीक करने की आवश्यकता होती है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कैसे सुनिश्चित करें कि आपका MySQL डेटाबेस सुरक्षित है

  2. MySQL कार्यक्षेत्र:क्वेरी में त्रुटि (1064):लाइन 1 पर 'दृश्यमान' के पास सिंटैक्स त्रुटि

  3. कमांड लाइन से एक mysql डेटाबेस को प्लेनटेक्स्ट (CSV) बैकअप में डंप करें

  4. MySQL में RLIKE ऑपरेटर कैसे काम करता है

  5. MySQL डेटाबेस का उपयोग करना सीखें