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

Node.js, Request, MySQL और कनेक्शन पूलिंग से अनंत ब्लॉकिंग/फ्रीजिंग व्यवहार होता है?

आप एसिंक्रोनस संसाधन को परिनियोजित करने के लिए सिंक्रोनस लूप का उपयोग कर रहे हैं। आप ऐसा नहीं कर सकते।

आपका जबकि लूप डेटाबेस पूल को भरता है और फिर एक बार फिर से लूप करता है और getConnection . पर ब्लॉक करता है जो तब पूरे Node.js इवेंट लूप को ब्लॉक कर देता है।

आप async . का उपयोग कर सकते हैं लूप के दौरान अतुल्यकालिक प्रदर्शन करने के लिए पैकेज।

async#forever कॉल वह करेगा जो आप हासिल करने की कोशिश कर रहे हैं।

साथ ही, आपका कोड डेटाबेस कनेक्शन लीक कर रहा है। आपको connection.end() डालना चाहिए कॉलबैक में पहले जब तक आप उसी कनेक्शन का फिर से उपयोग नहीं करने जा रहे हैं। अन्यथा, कोई त्रुटि डेटाबेस कनेक्शन को लीक कर देगी।

pool.getConnection(function (err, connection) {
    if (err) throw err;
    connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
      connection.end(); // return to pool before evaluating error.
      if (err) throw err;
      console.log('The solution is: ', rows[0].solution);
    });
});


  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. मैं ऐसे टेक्स्ट की खोज कैसे करूं जिसमें इमोजी हों?

  3. मेरे द्वारा Wordpress को नए सर्वर पर ले जाने के बाद Facebook मेटा डेटा को स्क्रैप नहीं कर सकता

  4. SQL क्वेरी में वर्गाकार कोष्ठक मान्य हैं?

  5. MySQL में मार्जिन की गणना कैसे करें