HEY COMMUNITY
Ich wollte mal eure Meinung dazu hoeren:
Ich habe einen Dienst, der jede Sekunde eine MySQL Select anweisung durchfuehrt, einige Daten loescht, andere modifiziert und dann wieder in die Datenbank ( mit Update und Delete uebertraegt ).
Ich habe eine grobe while schleife, logik:
while(StopThread)
{
//open connection
//update data
//close connection
//wait 1 second
}
Aus der log die ich provisorisch angelegt habe, ging hervor, das er manchmal 2 oder 3 sekunden zwischen den durchfuehrungen benoetigt und das werden spaeter mehr daten, als jetzt....
Waere es also sinnvoller die struktur folgendermassen zu gestalten:?!:
//open connection
while(StopThread)
{
//update data
//wait 1 second
}
//close connection
oder ist das voelliger humbuk, zur info ich benutzte eine dll von dev.mysql.org direkt und .NET 2.0 und es geht alles ueber ne DataTable.
mfg Albatros
noobie / Anfänger
C# 8) 8)
Du erzeugest mit dieser Vorgehensweise durchgehend Last auf dem Netzwerk und dem Datenbankserver. Das sollte man tunlichst vermeinden. Warum musst Du diese Operationen jede Sekunde durchführen?
Ich würde erst dann UPDATEs bzw. DELETEs absetzen, wenn sich auch tatsächtlich etwas geändert hat.
zum glueck nicht im Netzwerk... nene in meinem kleinen Netzwerk passiert das alles nur (127.0.0.1) Diese Sekuendlichen Nachschauarbeiten sind wichtig, weil sonst der Dienst fuer meine Anwender zu langsam reagiert...
Ist es vielleicht intelligenter zusaetzlich zu schauen, ob in den naechsten 5 - ... sekunden was anliegt, den Thread solange dann schlafen zu legen und danahc weiter machen lassen???
es ist so ne art tasklist, die wirklich jede sekunde aufgerufen werden muss
noobie / Anfänger
C# 8) 8)
Hallo,
Original von albatros
Aus der log die ich provisorisch angelegt habe, ging hervor, das er manchmal 2 oder 3 sekunden zwischen den durchfuehrungen benoetigt und das werden spaeter mehr daten, als jetzt....
Waere es also sinnvoller die struktur folgendermassen zu gestalten:?!:
Sofern du gewährleisten kannst, dass die Connection immer offen bleibt, bzw. dein Code eine verloren gegangene Connection zu restaurieren weiß, dann spricht nichts gegen den zweiten Ansatz. Dennoch ist das Öffnen und Schließen der DB-Conn in den meisten Fällen die richtigere Variante.
Es spricht prinzipiell nichts gegen die 2. Lösung. Sie erfordert lediglich höhere Voraussetzungen während des Betriebs.
Bis denne, JoKi
Bis denne, JoKi
Enjoy AFP FAQ - Participate AfpWiki - Get Blogged by JoKi - Talk to me at VFP User Group Meeting
wie ist das mit der Datensicherheit, angenommen eine Verbindung wird durch aussergweoehnliche vrokommnisse nicht geschlossen aber es wurden Daten mit ihr uebvermitttelt, bleiben diese dann in der Datenbank?
ist es vll die beste alternative dann alle 30 sekunden eine neue Verbindung aufzubauen?
edit: ist es denn sehr Leistungsziehend, ne Verbindung aufzubauen?
noobie / Anfänger
C# 8) 8)
Hallo,
Original von albatros
wie ist das mit der Datensicherheit, angenommen eine Verbindung wird durch aussergweoehnliche vrokommnisse nicht geschlossen aber es wurden Daten mit ihr uebvermitttelt, bleiben diese dann in der Datenbank?
Prinzipiell ja. Wenn über die Connection gültige SQL-Statements abgesetzt werden. Dennoch muss ein Angreifer erstmal die Connection kapern. Dazu gibt's sicherlich unterschiedlichste Varianten, aber so genau kenne ich mich in der Spezifikation von TCP/IP nicht aus.
ist es vll die beste alternative dann alle 30 sekunden eine neue Verbindung aufzubauen?
edit: ist es denn sehr Leistungsziehend, ne Verbindung aufzubauen?
Mal anders gefragt, was hast du denn im Großen vor? Laut Code willst du sekündlich ein Update absetzen, nun können 30 Sekunden dazwischen liegen.
Geht es um ein Live-System? Oder einfach nur um einen Sync-Prozess? Kritisch vs. unkritisch?
Sag' mal was dazu...
Bis denne, JoKi
Bis denne, JoKi
Enjoy AFP FAQ - Participate AfpWiki - Get Blogged by JoKi - Talk to me at VFP User Group Meeting
Nachher soll es ein Browser Online Game sein, der Dienst ist dafuer zuständig, die "Cronjobs" auszufuehren, die in der Datenbank stehen, dafür brauche ich die ja auch.
Wenn er einen neuen hat wird der ausgeführt.
Dann ne sekunde warten und so weiter...
dafür eigentlich jede sekunde, aberwenn ich weiß das nächste sekunde nichts ansteht muss ich ja auch nich unbedingt prüfen, es sei denn es kommt was neues dazu, allerdings ist etwas bauen/forschen innerhalb 1 sekunde eh nicht möglich...
noobie / Anfänger
C# 8) 8)