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

MySQL ऑप्टिमाइज़िंग INSERT स्पीड इंडेक्स की वजह से धीमी हो रही है

यदि आप तेजी से सम्मिलित करना चाहते हैं, तो सबसे पहले आपको उचित हार्डवेयर की आवश्यकता है। यह पर्याप्त मात्रा में RAM, यांत्रिक ड्राइव के बजाय एक SSD और बल्कि शक्तिशाली CPU को ग्रहण करता है।

चूंकि आप InnoDB का उपयोग करते हैं, आप इसे अनुकूलित करना चाहते हैं क्योंकि डिफ़ॉल्ट कॉन्फ़िगरेशन धीमी और पुरानी मशीनों के लिए डिज़ाइन किया गया है।

यहां InnoDB को कॉन्फ़िगर करने के बारे में एक अच्छी जानकारी दी गई है

उसके बाद, आपको एक बात जानने की जरूरत है - और वह यह है कि डेटाबेस अपना सामान आंतरिक रूप से कैसे करते हैं, हार्ड ड्राइव कैसे काम करते हैं और इसी तरह। मैं निम्नलिखित विवरण में तंत्र को सरल बनाऊंगा:

एक लेन-देन MySQL है जो हार्ड ड्राइव की पुष्टि करने के लिए प्रतीक्षा कर रहा है कि उसने डेटा लिखा है। इसलिए यांत्रिक ड्राइव पर लेन-देन धीमा है, वे प्रति सेकंड 200-400 इनपुट-आउटपुट ऑपरेशन कर सकते हैं। अनुवादित, इसका मतलब है कि आप यांत्रिक ड्राइव पर InnoDB का उपयोग करके प्रति सेकंड 200ish सम्मिलित प्रश्न प्राप्त कर सकते हैं। स्वाभाविक रूप से, यह सरलीकृत व्याख्या है , क्या हो रहा है इसकी रूपरेखा तैयार करने के लिए, यह लेन-देन के पीछे पूर्ण तंत्र नहीं है

चूंकि एक क्वेरी, विशेष रूप से आपकी तालिका के आकार के अनुरूप, बाइट्स के मामले में अपेक्षाकृत छोटी है - आप एक ही क्वेरी पर कीमती IOPS को प्रभावी ढंग से बर्बाद कर रहे हैं।

यदि आप एक ही लेन-देन में कई प्रश्नों (100 या 200 या अधिक, कोई सटीक संख्या नहीं है, तो आपको परीक्षण करना होगा) को लपेटते हैं और फिर इसे प्रतिबद्ध करते हैं - आप तुरंत प्रति सेकंड अधिक लेखन प्राप्त करेंगे।

Percona लोग अपेक्षाकृत सस्ते हार्डवेयर पर एक सेकंड में 15k इंसर्ट प्राप्त कर रहे हैं। यहां तक ​​कि 5k इंसर्ट एक सेकंड भी खराब नहीं है। आपकी जैसी तालिका छोटी है, मैंने एक समान तालिका (3 कॉलम अधिक) पर परीक्षण किए हैं और मैं ध्यान देने योग्य मुद्दों के बिना 1 बिलियन रिकॉर्ड प्राप्त करने में कामयाब रहा, 240GB SSD (1 ड्राइव, कोई RAID नहीं) के साथ 16GB रैम मशीन का उपयोग करके। परीक्षण उद्देश्यों के लिए उपयोग किया जाता है)।

टीएल; डीआर:- ऊपर दिए गए लिंक का पालन करें, अपने सर्वर को कॉन्फ़िगर करें, एक एसएसडी प्राप्त करें, 1 लेनदेन और लाभ में कई प्रविष्टियां लपेटें। और अनुक्रमण को बंद न करें और फिर चालू करें, यह हमेशा लागू नहीं होता है, क्योंकि किसी बिंदु पर आप उन्हें बनाने के लिए प्रसंस्करण और IO समय व्यतीत करेंगे।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. वेब सर्वर में सीधे PHP द्वारा सहेजे बिना, सर्वर साइड पर किसी फ़ाइल में बेस 64 स्ट्रिंग को कैसे निर्यात करें?

  2. विदेशी कुंजी तभी छोड़ें जब वह मौजूद हो

  3. MySQLdump और MySQL शेल उपयोगिता का उपयोग करके प्रदर्शन परीक्षण

  4. MySQL - अगर मौजूद है तो अपडेट करें और दो चाबियों के साथ डालें

  5. मैं हाइबरनेट + c3p0 + MySql को बड़ी संख्या में स्लीपिंग कनेक्शन बनाने से कैसे रोक सकता हूँ?