मल्टी कोर और MySQL प्रदर्शन


38

RAM का महत्व एक स्थापित तथ्य है, लेकिन जब तक MySQL द्वारा CPU के उपयोग की बात आती है, तब तक कोर और मल्टीथ्रेडिंग के महत्व के बारे में बहुत कम सामग्री उपलब्ध है। मैं 4cores बनाम 6cores बनाम 8cores और इतने पर MySQL चलाने के अंतर के बारे में बात कर रहा हूं।

क्या अलग-अलग स्टोरेज इंजन अलग-अलग CPU का उपयोग करते हैं?



इसके संबंधित लेकिन मल्टी कोर सीपीयू की ओर अलग-अलग स्टोरेज इंजन के व्यवहार को संबोधित नहीं करते हैं।
रिक जेम्स

1
वास्तव में। यही कारण है कि "डुप्लिकेट के रूप में करीब" वोट नहीं है ...
gbn

यह एक अद्भुत समुदाय है, मैं अभी भी इस साइट का उपयोग करना सीख रहा हूं।
रिक जेम्स

हाय दोस्त यहाँ एक नज़र रखना: mysql-cluster-blog.com आपको कम से कम कुछ मिलता है

जवाबों:


30

जब यह MySQL की बात आती है, तो भंडारण इंजन के बीच कोई तुलना नहीं है, सिवाय इसके कि यह दो बुनियादी श्रेणियों में आता है:

MySQL में कई स्टोरेज इंजन के उपयोग की सुविधा है

सूचीबद्ध भंडारण इंजनों के लिए, ACID- अनुपालन वाले केवल वही लोग हैं जो InnoDB और NDB हैं। इस आयात का उल्लेख क्यों है? दो कारण:

  • अन्य भंडारण इंजनों को मूल कोर I / O, CPU उपयोग और समग्र थ्रूपुट के अलावा, अधिक कोर की उपस्थिति के साथ लाभ नहीं मिलता है।
  • प्रत्येक गैर-लेन-देन भंडारण इंजन के लिए कोड, जो कि भंडारण इंजन की परवाह किए बिना मूल रूप से 14 आंतरिक संचालन को निर्देशित करता है, को कई कोर की पहुंच का लाभ उठाने के लिए डिज़ाइन नहीं किया गया था।

MySQL 5.5, InnoDB Plugin) के तहत InnoDB, और Percona Server के XtraDB के पास ऐसे विकल्प हैं जिन्हें आप कई कोर तक पहुँचने के लिए सेट कर सकते हैं (Percona Server अब तक ऐसा कर रहा है)। वास्तव में, Percona MySQL के स्रोत कोड के प्रत्येक नए GA रिलीज के साथ विशेष रूप से InnoDB के प्रदर्शन को बढ़ाने के लिए कोड की लगभग 30,000 लाइनों को इंजेक्ट करता है। हम यह सुनिश्चित कर सकते हैं कि ओरेकल ने मल्टीकोर ऑपरेशन (MySQL 5.1.38 के बाद से) के लिए InnoDB के भीतर चलने के लिए अपने स्वयं के थिंक टैंक से अपनी खुद की संवर्द्धन को शामिल किया है।

पंक्ति / पृष्ठ लॉकिंग के साथ संयोजन में डेटा पर MVCC प्रदर्शन करने की आवश्यकता के साथ, लेनदेन प्रदर्शन अब इंस्ट्रूमेंट, मापा और कॉन्फ़िगर किया जा सकता है।

अगर एक चीज है जो मैंने कई कोर का उपयोग करने के बारे में सीखा है, तो यह है कि आपको InnoDB को प्रभावी ढंग से ट्यून करना होगा और न केवल बॉक्स से बाहर InnoDB पर भरोसा करना चाहिए

अद्यतन 2011-09-20 08:03 EDT

सभी कोर से लाभान्वित होने वाले इनोबीडी के संबंध में, हमें चीजों को दृढ़ता से रखने की आवश्यकता है। डेटाबेस सर्वर में कोर को अन्य मामलों (ओएस, डिस्क, मेमोरी, एप्लिकेशन, मॉनिटरिंग, आदि) में भी जाना चाहिए। मामूली बजट वाले लोगों के लिए, कई के पास एक डेटाबेस सर्वर भी होता है जो NFS प्रदान करता है, मुनिन से निगरानी, ​​JBoss, PHP के लिए ऐप समर्थन और सूची जारी करता है। यदि आप MySQL चाहते हैं, तो अधिक विशेष रूप से InnoDB, अधिक कोर का उपयोग करने के लिए, डेटाबेस सर्वर को विशेष रूप से MySQL के लिए समर्पित होना चाहिए और ओएस / डिस्क / मेमोरी को केवल MySQL के लिए उपयोग करना चाहिए । इस दृष्टिकोण को देखते हुए, InnoDB एक संदेह के साथ अधिक कोर संलग्न करेगा

InnoDB प्लगइन के लिए के रूप में, यह केवल MySQL (एह, Oracle, की ओर से एक बेहतर InnoDB है करने के लिए पहले पहल दिखाने के लिए उल्लेख किया गया था। क्षमा करें, अभी भी अभी तक जीभ रोल नहीं करता है)। अधिक मुख्य गतिविधि को बुलाने के लिए नए चर MySQL 5.1.38 से स्पष्ट हो गए।

उदाहरण के लिए, innodb_read_io_threads और innodb_write_io_threads (दोनों MySQL 5.1.38 के बाद से) पढ़े और लिखने के लिए निर्दिष्ट थ्रेड की संख्या आवंटित करते हैं। डिफ़ॉल्ट 4 और अधिकतम 64 है। डिफ़ॉल्ट और अधिकतम सेटिंग्स इतनी अलग (4 - 64) होने से पता चलता है कि आप इसे कॉन्फ़िगर करते समय InnoDB बहुआयामी और कोर गहन है !!!

InnoDB के साथ अधिक कोर तक पहुंचने के लिए MySQL समुदाय की जरूरतों को संबोधित करते हुए पेरकोना ने नेतृत्व किया था। नतीजतन, MySQL ने सूट का पालन करना शुरू कर दिया। मुझे यह स्वीकार करना होगा कि ओरेकल (yuck) ने अधिक कोर गतिविधि के लिए आवश्यक सुधार किए हैं।


MySQL 5.5 के तहत InnoDB जैसा कि आपने ऊपर बताया है कि सभी कोर से फायदा हो सकता है? {InnoDB प्लगइन के बारे में थोड़ा उलझन में}
रिक जेम्स

@ क्लिक करें - आगे मेरे जवाब में अपनी टिप्पणी
RolandoMySQLDBA

यहाँ यह पूरी तरह से एक अलग कहानी लगती है और जब मल्टी कोर का उपयोग करने की बात आती है तो MyISAM सपाट हो जाता है, लेकिन दूसरी तरफ dba.stackexchange.com/questions/5974/best-of-myisam-and-innodb MyISAM पर है फायदे। इसलिए, यह तय करना है कि किस रास्ते पर जाना है।
रिक जेम्स

2
यह सब उस उद्देश्य पर निर्भर करता है जिसका उपयोग आपने MyISAM या InnoDB में किया है। आप क्या और कितना कैश करने को तैयार हैं? क्या आप डेटा पुनर्प्राप्ति के लिए MySQL या अन्य कैशिंग तंत्रों (जैसे वार्निश और मेमकेड) पर निर्भर हैं? क्या आपका हार्डवेयर InnoDB के लिए ठीक से छोटा है? क्या आपका SQL चयन 98% है? क्या हाई-स्पीड रीड्स के लिए तालिका सबसे अच्छे प्रारूप में है? इन सवालों के जवाब देने से हमें भंडारण इंजन चयन, उपयुक्त कॉन्फ़िगरेशन, हार्डवेयर चयन, यहां तक ​​कि उच्च उपलब्धता, डीबी टोपोलॉजी, पढ़ने / लिखने के विभाजन जैसी गहरी चीजों तक पहुंचने के लिए मार्गदर्शन करना चाहिए, और यह सूची चल सकती है।
RolandoMySQLDBA

9

मुझे लगता है कि कोर के इस्तेमाल से स्टोरेज इंजन के बारे में बात करना शुरुआती लोगों के लिए भ्रामक हो सकता है। बशर्ते कि एक प्रोग्राम पर्याप्त रूप से बहु-थ्रेडेड है, ऑपरेटिंग सिस्टम इसे यथासंभव अधिक से अधिक कोर शेड्यूल करेगा।

विशिष्ट समस्या जो सीपीयू-स्केलिंग को सीमित करती है, जब आंतरिक लॉकिंग कोड ( म्यूटेक्स ) में समवर्ती रूप से चलने से थ्रेड और ब्लॉक थ्रेड होते हैं। सभी स्टोरेज इंजनों को म्यूटेक्स की आवश्यकता होगी, लेकिन निश्चित रूप से MyISAM में कुछ हॉट हैं।

यदि हम एक दूसरे के लिए म्यूटेक्स विवाद को अनदेखा करते हैं और अपने मुख्य प्रश्न पर वापस आते हैं: तो कई कोर होना कितना महत्वपूर्ण है? -

मुझे वर्कलोड के लिए बहुत सारे कोर पसंद हैं जो उपयोगकर्ता के अनुरोधों का सामना करते हैं। कई होने से क्वेरी समय के बीच विचरण को कम किया जा सकता है। इस तरह से सोचें कि सुपर मार्केट में 12 गलियारों के साथ लाइनिंग सिर्फ 2 पर खुली।

अद्यतन : मैंने एक ब्लॉग पोस्ट पर लिखा है कि ऊर्ध्वाधर मापनीयता (बहु-कोर) क्यों महत्वपूर्ण है।


5
म्युटेक्स विवाद: कमरे में हाथी उल्लेख के लिए +1
CERD
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.