Vor kurzem sah ich ein Stück node.js Code wie unten, die als eigenständiger Dienst ausgeführt werden soll, ohne jedes Mal neu zu starten, wenn neue Anforderungen empfangen werden:Wie funktioniert der nicht blockierende mysql-Client?
switch(action) {
case 'a':
connectMysql(function(mysqlConnection) {
// some queries X
});
break;
case 'b':
connectMysql(function(mysqlConnection) {
// some queries Y
});
break;
/***** more actions *****/
}
Es öffnet sich eine neue Verbindung MySQL jedes Mal für jede Aktion, und der, der dies geschrieben hat, glaubt, dass dieser Ansatz sicherstellen könnte, dass Abfragen parallel ausgeführt werden und sich nicht gegenseitig blockieren, wenn es gleichzeitig einen großen Anforderungsbetrag gibt.
Das verwirrte mich wirklich, weil ich dachte, der mysql-Client für node.js ist nicht blockierend, was nichts blockiert.
Wenn irgendwelche Chancen, dass die Abfragen festhängen, der Grund könnte der Prozess war zu viele Anfragen zu behandeln, und mehr mysql Verbindungen wird definitiv nicht helfen.
Oder bedeutet ein nicht blockierender Client nur, dass er Abfragen asynchron sendet, aber die Abfragen werden schließlich auf der mysql-Serverseite blockiert, wenn zu viele Abfragen vorhanden sind?
Vielen Dank für Ihre Antwort, nur um sicherzustellen, dass ich diese richtig bekomme. Also im Grunde mysql Server führen Abfrage nur sequenziell von einer Verbindung, einige Clients werden eine Warteschlange oder einen Verbindungspool, um mit diesem Problem mit mehreren Abfragen Schritt zu halten. Und der Code, den ich gepostet habe, hat dieses Problem irgendwie gelöst, aber das Erstellen eines Verbindungspools wäre eine bessere Option, anstatt unbegrenzte Verbindungen zu öffnen, oder? – nevermind
Korrekt und korrekt. – mscdex