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

MySQLTuner का उपयोग करके MySQL के प्रदर्शन का अनुकूलन कैसे करें

विशिष्ट संसाधनों के लिए इष्टतम सेटिंग्स पर MySQL चलाना बड़े सर्वर लोड को संभालने में मदद करता है और सर्वर मंदी को रोकता है। आम तौर पर, अपाचे को बड़े भार को संभालने के बाद, अतिरिक्त कनेक्शन के लिए MySQL को ट्यून करना फायदेमंद होता है।

<टेम्पलेट x-if=visible><टेम्पलेट x-if=$isMobile()> <टेम्पलेट x-if=!$isMobile()> <टेम्पलेट x-if=खुला>

डेटाबेस ट्यूनिंग एक विस्तृत विषय है, और इस गाइड में केवल आपके MySQL कॉन्फ़िगरेशन को संपादित करने की मूल बातें शामिल हैं। बड़े MySQL डेटाबेस को काफी मात्रा में मेमोरी की आवश्यकता हो सकती है। इस कारण से, हम ऐसे सेटअप के लिए हाई मेमोरी लाइनोड का उपयोग करने की सलाह देते हैं।

नोट इस गाइड के चरणों के लिए रूट विशेषाधिकारों की आवश्यकता है। नीचे दिए गए चरणों को रूट . के रूप में चलाना सुनिश्चित करें या sudo . के साथ उपसर्ग। विशेषाधिकारों के बारे में अधिक जानकारी के लिए हमारे उपयोगकर्ता और समूह मार्गदर्शिका देखें।

टूल्स जो MySQL को ऑप्टिमाइज़ करने में मदद कर सकते हैं

यह निर्धारित करने के लिए कि क्या आपके MySQL डेटाबेस को पुन:कॉन्फ़िगर करने की आवश्यकता है, यह देखना सबसे अच्छा है कि आपके संसाधन अब कैसा प्रदर्शन कर रहे हैं। यह thetop कमांड के साथ या LinodeLongview सेवा के साथ किया जा सकता है। कम से कम, आपको अपने सर्वर के RAM और CPU उपयोग से परिचित होना चाहिए, जिसे इन कमांड से खोजा जा सकता है:

echo [PID]  [MEM]  [PATH] &&  ps aux | awk '{print $2, $4, $11}' | sort -k2rn | head -n 20
ps -eo pcpu,pid,user,args | sort -k 1 -r | head -20

MySQLTuner

TheMySQLTuner स्क्रिप्ट आपके MySQL इंस्टॉलेशन का आकलन करती है, और फिर आपके सर्वर के प्रदर्शन और स्थिरता को बढ़ाने के लिए सुझावों को आउटपुट करती है।

  1. MySQLTuner स्क्रिप्ट डाउनलोड करें:

     wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl
    
  2. स्क्रिप्ट अनुमतियों को निष्पादन योग्य बनाने के लिए बदलें:

     chmod +x mysqltuner.pl
    
  3. mysqltuner.plचलाएं लिखी हुई कहानी। आपको अपना MySQL प्रशासनिक लॉगिन और पासवर्ड दर्ज करने के लिए प्रेरित किया जाएगा:

     ./mysqltuner.pl
    
  4. स्क्रिप्ट नीचे दिए गए आउटपुट के समान परिणाम लौटाएगी:

    >>  MySQLTuner 1.4.0 - Major Hayden <[email protected]>
             >>  Bug reports, feature requests, and downloads at http://mysqltuner.com/
             >>  Run with '--help' for additional options and output filtering
            Please enter your MySQL administrative login: root
            Please enter your MySQL administrative password:
            [OK] Currently running supported MySQL version 5.5.41-0+wheezy1
            [OK] Operating on 64-bit architecture
    
            -------- Storage Engine Statistics -------------------------------------------
            [--] Status: +ARCHIVE +BLACKHOLE +CSV -FEDERATED +InnoDB +MRG_MYISAM
            [--] Data in InnoDB tables: 1M (Tables: 11)
            [--] Data in PERFORMANCE_SCHEMA tables: 0B (Tables: 17)
            [!!] Total fragmented tables: 11
    
            -------- Security Recommendations  -------------------------------------------
            [OK] All database users have passwords assigned
    
            -------- Performance Metrics -------------------------------------------------
            [--] Up for: 47s (113 q [2.404 qps], 42 conn, TX: 19K, RX: 7K)
            [--] Reads / Writes: 100% / 0%
            [--] Total buffers: 192.0M global + 2.7M per thread (151 max threads)
            [OK] Maximum possible memory usage: 597.8M (60% of installed RAM)
            [OK] Slow queries: 0% (0/113)
            [OK] Highest usage of available connections: 0% (1/151)
            [OK] Key buffer size / total MyISAM indexes: 16.0M/99.0K
            [!!] Query cache efficiency: 0.0% (0 cached / 71 selects)
            [OK] Query cache prunes per day: 0
            [OK] Temporary tables created on disk: 25% (54 on disk / 213 total)
            [OK] Thread cache hit rate: 97% (1 created / 42 connections)
            [OK] Table cache hit rate: 24% (52 open / 215 opened)
            [OK] Open file limit used: 4% (48/1K)
            [OK] Table locks acquired immediately: 100% (62 immediate / 62 locks)
            [OK] InnoDB buffer pool / data size: 128.0M/1.2M
            [OK] InnoDB log waits: 0
            -------- Recommendations -----------------------------------------------------
            General recommendations:
                Run OPTIMIZE TABLE to defragment tables for better performance
                Enable the slow query log to troubleshoot bad queries
            Variables to adjust:
                query_cache_limit (> 1M, or use smaller result sets)
    MySQLTuner डेटाबेस के प्रदर्शन को बेहतर बनाने के बारे में सुझाव देता है। यदि आप अपने डेटाबेस को स्वयं अपडेट करने के बारे में सावधान हैं, तो MySQLTuner के सुझावों का पालन करना आपके डेटाबेस के प्रदर्शन को बेहतर बनाने के सुरक्षित तरीकों में से एक है।

ट्यूनिंग MySQL

MySQL कॉन्फ़िगरेशन को बदलते समय, परिवर्तनों के प्रति सतर्क रहें और वे आपके डेटाबेस को कैसे प्रभावित करते हैं। MySQLTuner जैसे प्रोग्राम के निर्देशों का पालन करते हुए भी, प्रक्रिया की कुछ समझ होना सबसे अच्छा है।

MySQL कॉन्फ़िगरेशन फ़ाइल निम्न स्थान पर संग्रहीत है:/etc/mysql/my.cnf

नोट

अपने MySQL कॉन्फ़िगरेशन को अपडेट करने से पहले, my.cnf . का बैकअप बनाएं फ़ाइल:

cp /etc/mysql/my.cnf ~/my.cnf.backup

सर्वोत्तम अभ्यास से पता चलता है कि आप एक-एक करके छोटे-छोटे परिवर्तन करते हैं, और फिर प्रत्येक परिवर्तन के बाद सर्वर की निगरानी करते हैं। प्रत्येक परिवर्तन के बाद आपको MySQL को पुनरारंभ करना चाहिए:

systemd का उपयोग कर वितरण के लिए:

systemctl restart mysqld

विभिन्न init सिस्टम के साथ वितरण के लिए:

service mysql restart

my.cnf . में मान बदलते समय फ़ाइल, सुनिश्चित करें कि आप जिस लाइन को बदल रहे हैं, उस पर पाउंड (#) के साथ टिप्पणी नहीं की गई है ) उपसर्ग।

key_buffer

key_buffer को बदलना MySQL को अधिक मेमोरी आवंटित करता है, जो आपके डेटाबेस को काफी तेज कर सकता है, यह मानते हुए कि आपके पास मेमोरी फ्री है। key_buffer माईसाम टेबल इंजन का उपयोग करते समय आकार को आम तौर पर सिस्टम मेमोरी का 25 प्रतिशत से अधिक नहीं लेना चाहिए, और इनो डीबी के लिए 70 प्रतिशत तक। यदि मान बहुत अधिक सेट किया गया है, तो संसाधन बर्बाद हो जाते हैं।

MySQL के दस्तावेज़ के अनुसार, कई तालिकाओं के साथ 256MB (या अधिक) RAM वाले सर्वर के लिए, 64M की सेटिंग की अनुशंसा की जाती है। 128MB RAM और कम टेबल वाले सर्वर को 16M, डिफ़ॉल्ट मान पर सेट किया जा सकता है। कम संसाधनों और तालिकाओं वाली वेबसाइटों में यह मान कम हो सकता है।

max_allowed_packet

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

thread_stack

इस मान में प्रत्येक थ्रेड के लिए स्टैक आकार होता है। MySQL thread_stack के डिफ़ॉल्ट मान पर विचार करता है सामान्य उपयोग के लिए पर्याप्त चर; हालांकि, thread_stack . से संबंधित कोई त्रुटि होनी चाहिए लॉग इन किया जा सकता है, इसे बढ़ाया जा सकता है।

thread_cache_size

अगर thread_cache_size "बंद" है (0 पर सेट), तो किसी भी नए कनेक्शन को बनाने के लिए इसके लिए एक नया थ्रेड बनाने की आवश्यकता होती है। जब कनेक्शन अलग हो जाते हैं तो धागा नष्ट हो जाता है। अन्यथा, यह मान कैश में संग्रहीत करने के लिए अप्रयुक्त थ्रेड्स की संख्या तब तक सेट करता है जब तक कि उन्हें कनेक्शन के लिए उपयोग करने की आवश्यकता न हो। आम तौर पर इस सेटिंग का प्रदर्शन पर बहुत कम प्रभाव पड़ता है, जब तक कि आप प्रति मिनट सैकड़ों कनेक्शन प्राप्त नहीं कर रहे हों, उस समय इस मान को बढ़ाया जाना चाहिए ताकि अधिकांश कनेक्शन कैश्ड थ्रेड्स पर किए जा सकें।

max_connections

यह पैरामीटर समवर्ती . की अधिकतम राशि सेट करता है सम्बन्ध। इस नंबर को सेट करने से पहले आपके पास अतीत में जितने कनेक्शन थे, उस पर विचार करना सबसे अच्छा है, इसलिए आपके पास उस ऊपरी संख्या और max_connections के बीच एक बफर होगा। मूल्य। ध्यान दें, यह उपयोगकर्ताओं . की अधिकतम राशि को नहीं दर्शाता है आपकी वेबसाइट पर एक बार में; बल्कि यह अनुरोध . करने वाले उपयोगकर्ताओं की अधिकतम राशि को दर्शाता है एक साथ।

table_cache

यह मान आपके open_tables . से अधिक रखा जाना चाहिए मूल्य। यह मान निर्धारित करने के लिए उपयोग करें:

<टीडी क्लास =एलएनटीडी>
1
SHOW STATUS LIKE 'open%';

अधिक जानकारी

आप इस विषय पर अतिरिक्त जानकारी के लिए निम्नलिखित संसाधनों से परामर्श करना चाह सकते हैं। हालांकि ये इस उम्मीद में प्रदान किए जाते हैं कि वे उपयोगी होंगे, कृपया ध्यान दें कि हम बाहरी रूप से होस्ट की गई सामग्री की सटीकता या समयबद्धता की पुष्टि नहीं कर सकते।

  • MySQL डॉक्यूमेंटेशन लाइब्रेरी
  • MySQL ट्यूनिंग सर्वर पैरामीटर
  • MySQLTuner

  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 पर SQL केस संवेदनशील स्ट्रिंग तुलना कैसे कर सकता हूं?

  2. कमांड लाइन के माध्यम से लिनक्स पर एक MySQL उपयोगकर्ता को अनुमतियाँ प्रदान करें

  3. रूबी ऑन रेल्स 3 OSX पर सॉकेट '/tmp/mysql.sock' के माध्यम से स्थानीय MySQL सर्वर से कनेक्ट नहीं हो सकता

  4. MySQL केवल सबसे हाल की पंक्ति में शामिल हों?

  5. MySQL टेक्स्ट डेटा प्रकारों के लिए संग्रहण आकार को समझना