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

गो में `डेटाबेस/एसक्यूएल` का उपयोग करके अपडेट करना धीमा है

(MySQL के दृष्टिकोण से बोलते हुए...)

कुछ "अंगूठे के नियम":

  • एकल INSERT :10ms
  • 100 या अधिक पंक्तियों को एक INSERT . द्वारा सम्मिलित किया गया :प्रति पंक्ति 10 गुना तेज।
  • BEGIN; INSERT...; INSERT...; ... COMMIT; :साथ ही 10x.
  • उपरोक्त HDD मानता है; एसएसडी एक और 10 गुना तेज हो सकता है।
  • यदि एकाधिक कनेक्शन प्रत्येक सम्मिलित कर रहे हैं, तो वे हो सकता है समानांतर में चलाने में सक्षम हो। 10 धागे एक ही बीते हुए समय में 5 गुना काम करने में सक्षम हो सकते हैं। (बेशक, यह हो सकता है ऐप में अवांछित जटिलता जोड़ें।)

UPDATE . के लिए समान आंकड़े , हालांकि एक ही क्वेरी के साथ अलग-अलग पंक्तियों पर अलग-अलग अपडेट करना आसान नहीं है।

आपका परीक्षण प्रति पंक्ति 8.5ms दिखाता है UPDATEd एक समय में एक पंक्ति करते समय। या तो BEGIN...COMMIT . के साथ बैचिंग शायद सभी 100 पंक्तियों के लिए लगभग 85ms लगेंगे, यहां तक ​​कि HDD पर भी।

कुछ अनुप्रयोग स्वयं को बैचिंग के लिए उधार देते हैं; कुछ नहीं। यदि आप MySQL के प्रदर्शन में सुधार के बारे में बात करना चाहते हैं, तो हमें आपके आवेदन के विवरण में जाना होगा।

"पसंद करें" और "देखें" काउंटर हो सकता है एक 'समानांतर' तालिका में ले जाने की आवश्यकता है क्योंकि वे अन्य गतिविधि के साथ कुछ हस्तक्षेप के साथ, एक-एक-बार अपडेट किए जाते हैं। वे स्वचालित रूप से मल्टी-थ्रेडिंग की अनुमति देते हैं, इसलिए प्रति 100 850ms से बहुत कम। वास्तव में उच्च गतिविधि में (अधिक, कहते हैं, प्रति सेकंड 1K दृश्य), ऐसे काउंटरों को अतिरिक्त ऐप कोड के माध्यम से कृत्रिम रूप से बैच किया जा सकता है।

वास्तविक एप्लिकेशन में होने वाली गतिविधि को दर्शाने के लिए कृपया अपने बेंचमार्क को फिर से लिखें। (मैं अनुमान कर रहा हूं कि अपडेट समानांतर में होंगे, सीरियल में नहीं। और उन्हें समय के साथ बेतरतीब ढंग से फैला दिया जाएगा।)

एक और बात ... यदि प्रत्येक "व्यू काउंट" वेब सर्वर पर आता है, तो कनेक्ट और डिस्कनेक्ट भी होता है; इसलिए बीता हुआ समय 8.5ms से अधिक होने की संभावना है। लेकिन "बीता हुआ" महत्वपूर्ण मुद्दा नहीं है; असली मुद्दा यह है कि "प्रति सेकंड कितने अपडेट किए जा सकते हैं"।)

और एक और बात ... यदि आप 'समानांतर' का परीक्षण करते हैं, तो प्रत्येक अनुरोध से एक ही पंक्ति को हिट न करें। यदि आप अलग-अलग पंक्तियों को मारते हैं तो यह शायद बहुत धीमा होगा। (यादृच्छिक पंक्ति को मारना बेहतर होगा। किस पंक्ति में हिट करना है, यह पूर्वाग्रह और भी अधिक यथार्थवादी होगा।)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एकाधिक मानों के लिए अलग-अलग पंक्तियों की संख्या गिनें

  2. SQLAlchemy के लिए रॉ SQL

  3. आरएचईएल/सेंटोस 8/7 और फेडोरा 35 . पर MySQL 8.0 कैसे स्थापित करें

  4. लारवेल 4 - जॉइन - समान कॉलम नाम

  5. MySQL त्रुटि:चयन सूची समूह द्वारा खंड में नहीं है