Node.js und viele Mysql Abfragen?

5 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Probier statt dem mysql-Package mal das mysql2-Package. Dieses soll bessere Performance liefern.

Sonstige Punkte, welche Verbesserung bringen könnten:

Je nachdem, was für Daten du dort abfragst, würde ein Cache womöglich auch Sinn ergeben.

Woher ich das weiß:Berufserfahrung – Informatiker Applikationsentwicklung

Du darfst allgemeine Datenbankabfragen nie synchron tätigen. Verwende immer eine asynchrone Funktion mit dem Schlüsselwort "async". Dann benutze für die jeweiligen Abfragen an die Datenbank das Schlüsselwort "await" und so sollte alles schneller funktionieren, da mehrere Funktionen gleichzeitig aufgerufen werden können.

Woher ich das weiß:eigene Erfahrung
alberttomasusw 
Fragesteller
 04.04.2022, 10:58

Weist du ob diese Standard Abfrage von der Bibliothek nicht schon asynchron ist?

con.query(sql, function (err, result) {

if (err) throw err;

console.log("record inserted");

 });

0
bitsandbytes  04.04.2022, 11:04
@alberttomasusw

Nicht wirklich. Kenne mich da auch nicht so aus. Aber das ist nur eine Callback Funktion. Schreib anstatt function mal "async function" hin und mache dann die anderen Funktionen innerhalb dieser mit await.

Und besser: verwende gar keine Callbacks, sondern schreib einfach hinter con.query(sql).then(() => {DEINE DINGE}) hin.

1
bitsandbytes  04.04.2022, 11:05
@bitsandbytes

Und, wenn das wirklich viele Funktionen werden kannst du bei dem Responseteil auch eine asynchrone Funktion drausmachen.

1
alberttomasusw 
Fragesteller
 04.04.2022, 11:30
@bitsandbytes

Ich habe eben das Beispiel mit Benutzen von Pools probiert und festgestellt das es aufjedenfall schnell ist jetzt da ich nicht so fit bin mit asynchron javascript werde ich etwas mehr zeit brauchen aber sobald ich etwas mehr zeit habe werde ich probieren mit await das irgendwie zu bauen, da muss ich dann experementieren aber das will ich aufjedenfall auch so mit await machen

0
alberttomasusw 
Fragesteller
 04.04.2022, 11:34
@bitsandbytes

Meine Abfragen sehen alle so aus:

con.query(sql, function (err, result) {

if (err) throw err;

console.log("record inserted");

 });

wenn du willst gib mir noch auf die schnelle ein tipp wie man das kurz aendern muss damit es mit await richtig funktioniert, ich bin da nicht so fit mit asynchron. Ich hatte auch mal mit MongoDB was angefangen zu bauen, ist eigentlich auch super Datenbank, aber ich baue hier gerade etwas das muss schnell gehen.

0
bitsandbytes  04.04.2022, 11:42
@alberttomasusw

Wie gesagt, mach die Funktion einfach weg und schreibe sie in con.query(sql).then(()=> {HIER SOWAS WIE CONSOLE LOG})

1

kommt halt darauf an wie du das gemacht hast . selber function in function ? oder mit await ?

alberttomasusw 
Fragesteller
 04.04.2022, 10:55

ich benutze die standard beispiele von der Bibliothek

con.query(sql, function (err, result) {

if (err) throw err;

console.log("record inserted");

 });

0

Die stacken sich und dabei ensteht eine verlangsamung weil sämtliche nachfragen nacheinander abgefragt werden

alberttomasusw 
Fragesteller
 04.04.2022, 10:53

es ist aufjedenfall so aus. Wie kann man sowas besser machen?

1
unsensibe  04.04.2022, 10:56
@alberttomasusw

Du must dir das wie eine öffnung mit filter vorstellen momenta ist dort ein schlitz drinne wo die anfragen durchkommen allerdings kannst du mit mehr leisten diesen schlitz erweitern

0