MySQL का अधिकतम मेमोरी उपयोग हार्डवेयर, आपकी सेटिंग्स और स्वयं डेटाबेस पर निर्भर करता है।
हार्डवेयर
हार्डवेयर स्पष्ट हिस्सा है। जितना अधिक उतना तेजी से डिस्क राम FTW । हालांकि उन मासिक या साप्ताहिक समाचार पत्रों पर विश्वास न करें। MySQL रेखीय पैमाने पर नहीं है - Oracle हार्डवेयर पर भी नहीं। यह उससे थोड़ा पेचीदा है।
लब्बोलुआब यह है: आपके MySQL सेटअप के लिए अनुशंसा के लिए अंगूठे का कोई सामान्य नियम नहीं है । यह सब वर्तमान उपयोग या अनुमानों पर निर्भर करता है।
सेटिंग्स और डेटाबेस
MySQL अपने व्यवहार को अनुकूलित करने के लिए अनगिनत चर और स्विच प्रदान करता है। यदि आप मुद्दों में भाग लेते हैं, तो आपको वास्तव में बैठना और (f'ing) मैनुअल पढ़ना होगा।
डेटाबेस के लिए के रूप में - कुछ महत्वपूर्ण बाधाओं:
- तालिका इंजन (
InnoDB
, MyISAM
, ...)
- आकार
- सूचकांक
- प्रयोग
स्टैकओवरफ्लो पर अधिकांश MySQL टिप्स आपको 5-8 के बारे में बताएंगे जो कि महत्वपूर्ण सेटिंग्स कहलाते हैं। सबसे पहले, उन सभी को कोई फर्क नहीं पड़ता - जैसे कि बहुत सारे संसाधनों को आवंटित करना InnoDB और InnoDB का उपयोग नहीं करना बहुत मायने नहीं रखता है क्योंकि उन संसाधनों को बर्बाद किया जाता है।
या - बहुत से लोग max_connection
वैरिएबल का सुझाव देते हैं - ठीक है, बहुत कम लोग जानते हैं कि इसका मतलब यह भी है कि MySQL उन लोगों को पूरा करने के लिए और अधिक संसाधन आवंटित करेगा max_connections
- यदि कभी आवश्यक हो। अधिक स्पष्ट समाधान आपके DBAL में डेटाबेस कनेक्शन को बंद करने या wait_timeout
उन थ्रेड्स को खाली करने के लिए कम हो सकता है ।
यदि आप मेरे बहाव को पकड़ते हैं - वास्तव में बहुत कुछ है, बहुत कुछ पढ़ना और सीखना है।
इंजन
टेबल इंजन एक बहुत ही महत्वपूर्ण निर्णय है, बहुत से लोग उन लोगों के बारे में जल्दी भूल जाते हैं और फिर अचानक खुद को 30 जीबी आकार की MyISAM
मेज के साथ लड़ते हुए पाते हैं जो अपने पूरे आवेदन को लॉक और ब्लॉक कर देता है।
मैं कहना है मतलब यह नहीं है MyISAM बेकार है , लेकिन InnoDB
जवाब के लिए बदलाव किया जा सकता है लगभग या लगभग जितनी जल्दी MyISAM
और प्रस्तावों पर पंक्ति-लॉकिंग के रूप में ऐसी बात UPDATE
है, जबकि MyISAM
ताले पूरे तालिका जब यह करने के लिए लिखा है।
यदि आप अपने स्वयं के बुनियादी ढाँचे पर MySQL को चलाने के लिए स्वतंत्र हैं, तो आप percona सर्वर की जाँच भी कर सकते हैं क्योंकि Facebook और Google जैसी कंपनियों के बहुत से योगदानों में से (वे तेजी से जानते हैं), इसमें Percona की स्वयं की ड्रॉप भी शामिल है- प्रतिस्थापन के लिए InnoDB
कहा जाता है, XtraDB
।
Percona-server (और -client) सेटअप (उबंटू पर) के लिए मेरा जिस्ट देखें: http://gist.github.com/637669
आकार
डेटाबेस का आकार बहुत महत्वपूर्ण है, यह विश्वास है या नहीं - इंटर्वेब पर ज्यादातर लोगों ने कभी भी एक बड़े को संभाला नहीं है और गहन MySQL सेटअप लिखते हैं, लेकिन वे वास्तव में मौजूद हैं। कुछ लोग ट्रोल करेंगे और कुछ ऐसा कहेंगे, जैसे "PostgreSQL का उपयोग करें !!! 111", लेकिन अभी के लिए उन्हें अनदेखा कर दें।
लब्बोलुआब यह है: आकार से देखते हुए, हार्डवेयर के बारे में निर्णय किया जाना है। आप वास्तव में 1 जीबी रैम पर 80 जीबी डेटाबेस को तेजी से नहीं चला सकते हैं।
सूचकांकों
यह नहीं है: अधिक, विलय। केवल आवश्यक सूचकांकों को सेट किया जाना है और उपयोग के साथ जांच की जानी है EXPLAIN
। इसमें जोड़ें कि MySQL EXPLAIN
वास्तव में सीमित है, लेकिन यह एक शुरुआत है।
सुझाए गए कॉन्फ़िगरेशन
इन my-large.cnf
और my-medium.cnf
फाइलों के बारे में - मुझे यह भी नहीं पता कि ये किसके लिए लिखे गए थे। अपना खुद का रोल करें।
ट्यूनिंग प्राइमर
एक शानदार शुरुआत ट्यूनिंग प्राइमर है । (: यदि आप लिनक्स की आवश्यकता होगी संकेत), जो के उत्पादन में ले जाता है यह एक bash स्क्रिप्ट है SHOW VARIABLES
और SHOW STATUS
और उम्मीद है कि उपयोगी सिफारिश में यह गिर्द घूमती है। यदि आपका सर्वर कुछ समय चला है, तो सिफारिश बेहतर होगी क्योंकि उन्हें आधार बनाने के लिए डेटा होगा।
ट्यूनिंग प्राइमर हालांकि जादू की चटनी नहीं है। आपको अभी भी उन सभी चरों पर पढ़ना चाहिए जो इसे बदलने का सुझाव देते हैं।
पढ़ना
मैं वास्तव में mysqlperformanceblog की सिफारिश करना पसंद करता हूं । यह MySQL से संबंधित सभी प्रकार के सुझावों के लिए एक शानदार संसाधन है। और यह सिर्फ MySQL नहीं है, वे सही हार्डवेयर के बारे में भी बहुत कुछ जानते हैं या एडब्ल्यूएस आदि के लिए सेटअप की सिफारिश करते हैं। इन लोगों के पास वर्षों और वर्षों का अनुभव है।
एक अन्य महान संसाधन ग्रह-माईस्कल है ।