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

एकाधिक प्रश्न बनाम संग्रहित प्रक्रिया

कोई भी सिफारिश आंशिक रूप से इस बात पर निर्भर करती है कि प्रश्नों को निष्पादित करने वाली स्क्रिप्ट कहाँ रहती है। यदि क्वेरी निष्पादित करने वाली स्क्रिप्ट MySQL इंस्टेंस के समान सर्वर पर है तो आपको इतना अंतर नहीं दिखाई देगा, लेकिन 1 संग्रहित प्रक्रिया की तुलना में 200k प्रश्नों को निष्पादित करने में अभी भी एक छोटा ओवरहेड होगा।

मेरी सलाह किसी भी तरह से इसे संग्रहीत प्रक्रिया के रूप में बनाना होगा। आपको शायद कुछ प्रक्रियाओं की आवश्यकता होगी।

  1. एक प्रक्रिया जो आपके द्वारा प्रति ऑपरेशन किए गए 10 कथनों को 1 कॉल में जोड़ती है
  2. एक प्रक्रिया जो CURSOR . का उपयोग करके तर्कों की तालिका पर पुनरावृति कर सकती है प्रक्रिया 1 में फीड करने के लिए

आपकी प्रक्रिया होगी

  1. एक तालिका को तर्कों के साथ भरें जिसे प्रक्रिया 1 में प्रक्रिया 2 द्वारा फीड किया जाएगा
  2. प्रक्रिया 2 निष्पादित करें

इससे प्रदर्शन लाभ मिलेगा क्योंकि MySQL सर्वर से 20000*10 बार कनेक्ट होने की कोई आवश्यकता नहीं है। जबकि ओवरहेड प्रति-अनुरोध छोटा हो सकता है, मिलीसेकंड जुड़ जाते हैं। भले ही प्रति अनुरोध 0.1ms की बचत हो, फिर भी वह 20 सेकंड सहेजा जाता है।

एक अन्य विकल्प उपरोक्त डेटाबेस तालिका से डेटा खींचने के लिए अपने 10 प्रश्नों को समायोजित करके एक बार (यदि व्यवहार्य हो) सभी 20k डेटा संचालन करने के लिए आपके अनुरोधों को संशोधित करना हो सकता है। इस सब की कुंजी एक बैच इंसर्ट में तर्कों को लोड करना है, और फिर MySQL सर्वर पर स्टेटमेंट्स का उपयोग करके उन्हें बिना किसी राउंड ट्रिप के प्रोसेस करना है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mySQL डीबी तालिका में फ्रेंच वर्ण कैसे सम्मिलित करें?

  2. लार्वा होने:कॉलम नहीं मिला

  3. बैश में चर घोषित करें?

  4. स्प्रिंग Jdbctemplate.update (स्ट्रिंग sql, obj ... args) का उपयोग करके सम्मिलित आईडी कैसे प्राप्त करें

  5. MySQL - जहां क्लॉज में कुल कॉलम का संदर्भ देना