आप एक भारी InnoDB कार्यभार के लिए MySQL को कैसे ट्यून करते हैं?


39

मुख्य रूप से InnoDB तालिकाओं के साथ एक उत्पादन OLTP सिस्टम मान लें

  • एक गलत तरीके से पेश किए जाने वाले / गलत व्यवहार वाले सामान्य लक्षण क्या हैं?
  • कॉन्फ़िगरेशन पैरामीटर क्या आप आमतौर पर उनकी चूक से सबसे अधिक बदलते हैं?
  • समस्या होने से पहले आप संभावित अड़चनों को कैसे देखते हैं?
  • आप सक्रिय समस्याओं को कैसे पहचानते हैं और उनका निवारण कैसे करते हैं?

विशिष्ट statusचर और निदान का विवरण देने वाला कोई भी उपाधि की सराहना की जाएगी।


2
यह प्रश्न बहुत व्यापक है। क्या आप इसे 4 प्रश्नों में विभाजित कर सकते हैं? (और यहां तक ​​कि आपके बुलेटेड प्रश्न अविश्वसनीय रूप से व्यापक हैं। क्या आप उन्हें अपनी विशिष्ट समस्याओं के साथ
त्वरित

जवाबों:


16

यहाँ सूर्य की जेनी चेन से InnoDB ट्यूनिंग पर एक अच्छा लेख है - वह MySQL के बारे में बहुत कुछ ब्लॉग करता है, इसमें से कुछ सोलारिस-विशिष्ट (जैसे DTrace का उपयोग करना ) है लेकिन पूरा ब्लॉग दिलचस्प tidbits से भरा है।


4
जेनी चेन कौन है?
पचेरियर

19

दिलचस्प बात यह है कि MySQL 5.5 में, अब आपके पास कई इनोडब बफर बफर हो सकते हैं।

आपके द्वारा परवाह किए जाने वाले पैरामीटर हैं

लगभग एक महीने में, मुझे एक ग्राहक के लिए 112 इनोडब बफर बफर लागू करने के लिए स्लेट किया गया है। मैं आपको बताऊंगा कि यह कैसे हुआ।

UPDATE 2011-02-27 21:57 EDT

मुझे पता चला कि innodb_buffer_pool_instances के लिए अधिकतम मान 64 है मैंने 144 GB कॉन्फ़िगर करने का निर्णय लिया है, इसलिए मैंने innodb_buffer_pool_instances को 18 और innodb_buffer_pool_instances से 8 पर सेट किया है। मैं वर्तमान में 450GB के साथ सर्वर लोड कर रहा हूं

UPDATE 2011-04-28 13:44 EDT

मैंने कई InnoDB बफर पूल की कोशिश की। बहुत अधिक थ्रेडिंग लॉकिंग और विवाद था। मैं 162GB बफ़र पूल + में रीड_io_threads और राइट_io_threads को 64 (अधिकतम मान) पर सेट करने के लिए बदल गया। इसने बेहतर तरीके से काम किया।

अद्यतन 2012-07-03 17:27 EDT

मैंने MySQL के बारे में कुछ अद्भुत सीखा। यदि आप एक एकल अखंड InnoDB बफर पूल आवंटित करते हैं जो कि भौतिक CPU की संख्या से विभाजित कुल स्थापित है , तो आपका पूर्ण InnoDB बफर पूल के कारण ओएस को नियमित अंतराल मेमोरी स्वैपिंग के लिए उकसाएगा। MySQL 5.5 का विकल्प जिसे innodb_buffer_pool_instances के रूप में जाना जाता है, का उपयोग बफर पूल को विभाजित करने के लिए किया जा सकता है। कल, मैंने पिछले वर्ष अपने उत्तर में उल्लेखित ग्राहक के लिए इसे ठीक से लागू किया। मेरे पास अभी भी क्लाइंट के बफ़र पूल के लिए 162GB है। मैंने सर्वर के innodb_buffer_pool_instances विकल्प को 2 पर सेट किया है क्योंकि प्रत्येक DB सर्वर दोहरी हेक्साकोर है। मैं इसे 12 पर सेट करने के बारे में सोच रहा था, लेकिन फिर एक सहयोगी ने मुझे MySQL और Swappiness पर जेरेमी कोल से एक ब्लॉग दिखाया। इसे पढ़ने के बाद, मैंने इसे अपने ग्राहक के लिए तुरंत अभ्यास में डाल दिया। मैंने यह कमान चलाई

numactl --hardware

मैंने प्रत्येक भौतिक कोर में 96GB के रूप में 192GB सर्वर रैम की मैपिंग देखी। इसलिए, मैं 2 को innodb_buffer_pool_instances सेट करता हूं। चीजें अभी अच्छी लग रही हैं। मैं यह देखने के लिए अपने उत्तर को अपडेट करूंगा कि यह अगले 2 montns के लिए मेमोरी स्वैपिंग को कैसे प्रभावित करता है।


hi @RolandoMySQLDBA, jeremy के ब्लॉगों से मुझे ऐसा कोई भी कनेक्शन या निष्कर्ष नहीं मिल सकता है, जो असंख्य उदाहरणों को सेट करके भौतिक CPU की संख्या के बराबर हो, स्वैपिंग समस्या का समाधान करेगा। क्या कई निर्दोष उदाहरण स्वचालित रूप से मेमोरी नोड्स के बीच संतुलन स्थापित किए बिना numactl --interleave = सभी के बीच संतुलन स्थापित करते हैं, लिनक्स के बफर कैश फ्लश करते हैं या ओएस को InnoDB के बफर पूल को आवंटित करने के लिए मजबूर करते हैं?
वेन रेन

@ रोलैंडो, नाइस 2x 100 जीबी रैम। कौन सा ग्राहक है?
पचेरियर

मैंने सोचा कि "उदाहरण" इस प्रकार लागू किए गए हैं: (ब्लॉक संख्या) MOD (संख्या उदाहरण) -> (ब्लॉक में डालने के लिए कौन सा उदाहरण)। इसका NUMA से कोई लेना- देना नहीं है।
रिक जेम्स

7

आप निम्नलिखित संसाधनों का पता लगाना चाहते हैं:


4

सबसे पहले my.cnf में डिफ़ॉल्ट InnoDB बफ़र पूल का आकार बढ़ाएँ (मेरा मानना ​​है कि यह डिफ़ॉल्ट 8MB है)

आपको इसे अपने RAM आकार का 75% (सामान्य रूप से) सेट करना चाहिए


-1

कॉन्फ़िगरेशन पैरामीटर क्या आप आमतौर पर उनकी चूक से सबसे अधिक बदलते हैं?

मेमोरी कॉन्फ़िगरेशन


क्या आप अधिक व्याख्यात्मक उत्तर प्रदान कर सकते हैं? आप उनके बारे में क्या बदलते हैं? आप उन परिवर्तनों को क्यों करते हैं? कहा परिवर्तनों के बाद आपके अपेक्षित अवलोकन क्या हैं? आप कैसे जानते हैं कि उन्हें क्या बदलना है?
jcolebrand

आउट ऑफ द बॉक्स mysql कॉन्फ़िगरेशन को जल्दी से स्थापित करने के लिए तैयार किया गया है myisam तालिकाओं (जैसा कि अधिकांश उपयोगकर्ता इसे उसी तरह से उपयोग करते हैं), इसके अलावा अच्छी तरह से अनुकूलित सर्वर होने के लिए आपको उपयोग करने के लिए "प्राथमिक" इंजन का चयन करना चाहिए (निर्दोष या mysql) इसके वास्तव में काफी बूथ इंजनों के लिए उत्कृष्ट प्रदर्शन के लिए डेटाबेस को कॉन्फ़िगर करना मुश्किल है, mysql के पास myisam और innodb इंजन के लिए अलग-अलग बफर हैं
18
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.