Laden...

mysql via c# proggi lahmt total

Erstellt von numpsy vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.247 Views
N
numpsy Themenstarter:in
231 Beiträge seit 2007
vor 15 Jahren
mysql via c# proggi lahmt total

verwendetes Datenbanksystem: <mysql>

also ich habe nen 2ten rechner im netzwerk via wlan angebunden...
ich mache ausm proggi nen query, der mit 6000 werte zurückliefert... das klappt alles super - nur bin ich mit der ausführungsgeschwindigkeit unzufrieden - es handelt sich um ein normales select, also nix wildes... laut query browser ist ausführungszeit aufm server 0,3sek

das ding kommt im querybrowser erst nach 8sek und bei mir erst sogar im c#proggi nach 9-10sekunden an... was kann man da machen... es geht ja, aber unverschämt langsam?! 😦

            OdbcDataReader reader = new OdbcCommand(query, db).ExecuteReader();  

ich habe die ausführungszeit auf diese zeile lokalisiert, also es liegt nicht wirklich am dbConnect -> der zwar auch mit ner sek zu lange dauert .-/

jetzt habe ich mal den mysql connector genommen:
< -> 1 : 00:00:00.5625000 // nachm db connect
< -> 2 : 00:00:08.2968750 // nachm var reader = new MySqlCommand(query, conn).ExecuteReader(); ausführen

es ist mysql aus dem xaamp paket...

R
317 Beiträge seit 2006
vor 15 Jahren

Hallo,

ich würde an deiner Stelle anstatt von ODBC den MySQL .NET Provider benutzen.
Vermute mal Stark das der ODBC-Treiber der engpass ist.

http://dev.mysql.com/downloads/connector/net/5.2.html

Mfg,
Daniel

N
numpsy Themenstarter:in
231 Beiträge seit 2007
vor 15 Jahren

jetzt habe ich mal den mysql connector genommen:
< -> 1 : 00:00:00.5625000 // nachm db connect
< -> 2 : 00:00:08.2968750 // nachm var reader = new MySqlCommand(query, conn).ExecuteReader(); ausführen

habe natürlich beide getestet... das ändert alles nix

F
10.010 Beiträge seit 2004
vor 15 Jahren

Wenn du die Query auf dem server im Explorer machst, fehlt die Anmeldung.
Die dauert bei WLan aufgrund der ganzen Päckchen die da hin und her gehen
recht lange.

Ab der 2. Verbindung wird das dank Connectionpooling besser.
Aber MySql ist über das netz sowieso eher langsam gegenüber echten datenbanken.

104 Beiträge seit 2004
vor 15 Jahren

Hi,

Wie groß ist denn die Datenmenge die du abfragst?

Auch wenn es höchst wahrscheinlich am Netzwerktraffic liegt könnte man das nochmal testen indem man sich z.B. nur die IDs holt - Das sollte dann ja um einiges zügiger gehen.

btw:
DbCommand- und DbReader-Objekte sollten nach Verwendung Disposed werden. ;P
(Falls du den Befehl nicht nur übersichtshalber einzeilig gemacht hast)

Grüße

Schaut mal im IRC vorbei:
Server: irc.euirc.net
Channel: #C#

N
numpsy Themenstarter:in
231 Beiträge seit 2007
vor 15 Jahren

also wenn ich 3 datensätze bestehend aus 4 werten (id, double, double, timestamp)

8 sekunden... ich habe jetzt auch mal mysql server von der seite genommen und nicht dieses xaamp... es lahmt...

die tabelle aus der es gezogen wird, hat etwa 1million datensätze... eigentlich habe ich die indizes nach oben geschraubt, aber trotzdem lahmt es...

3.971 Beiträge seit 2006
vor 15 Jahren

wenn du mysql einsetzen willst oder auch musst, solltest du dich zwingend mit MySQL Administration beschäftigen. Ein MySQL-Server richtig zu konfigurieren lernt man nicht in ein paar Stunden oder auch Tagen.

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...

N
numpsy Themenstarter:in
231 Beiträge seit 2007
vor 15 Jahren

also ich habe jetzt mal sql server 2008 installiert und sie da... von 0.0x bis 1sek max dauert da der zugriff via c# insgesamt, wobei wenn dann die meiste zeit fü das open der connection drauf geht...

ergo mysql = schrott

3.971 Beiträge seit 2006
vor 15 Jahren

ergo mysql = schrott

Falsch, du kannst mysql nicht als Schrott bezeichnen, nur weil du es nicht konfigurieren kannst! MySQL ist immer noch einer der meistgenutzten Datenbanken im Bereich WebApplikation. Das wäre sicherlich nicht so, wenn die Datenbank schrott wäre. Es gibt aus gutem Grund die Berufsbezeichnung Datenbankadministrator!

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...

3.003 Beiträge seit 2006
vor 15 Jahren

Ich benutze den DevArt Connector als Provider für MySql-Verbindungen, und der ist schnell. Es liegt am Provider. (dass die von Sun tatsächlich die Bezeichnung "Schrott" verdienen, ist kein Geheimnis. Sun halt.)

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

N
numpsy Themenstarter:in
231 Beiträge seit 2007
vor 15 Jahren

habe den jetzt glei auch mal getestet - ist nicht signifikant besser in meiner produktumgebung... was aber sauschnell ist ist sql srv 2008 -> zentel sekunden für die gleiche operation!

H
116 Beiträge seit 2008
vor 15 Jahren

Also ich vermute, dass an irgendeiner Stelle Deiner Konfiguration von MySql etwas nicht stimmt. Ich selber behandle im Testumfeld derzeit zwar nur rund 4.000 Datensätze, aber um diese aus einer ca. 20MB großen Access-Datein (lies: Kalle vermied bewusst den Begriff Datenbank) mit massiven JOIN-Statements ohne Indizies aus mehreren Tabellen auszulesen, in C# zu prüfen, teils Strings zu splitten und neue zusammenzusetzen und dann auf mehrere Tabellen in MySql (InnoDb) in einer Transaktion zu schreiben, braucht es bei mir rund 5 (INSERT) bzw. 2 (UPDATE) Sekunden.

MySql wird auf einem Linux-Server (älterer AMD, also nicht der Knaller, 2 GB) über TCP/IP im Netz über eine ca. 5MB/s breite symmetrische DSL-Leitung angesprochen. Die Access-Datei befindet sich ebenfalls auf dem Server in einem über Samba-VSCAN verwalteten Netzwerk-Pfad. Den Server bringt die Aktion nicht einmal auf 25% Belastung. Der Client ist ein drei Jahre alter Aldi-PC mit 1GB in der VS-Umgebung, also auch nicht der Knaller, der sich nebenbei noch mit dem DVBViewer und anderem sinnlosen Zeug rumschlagen muss (leichtes Ruckeln der Nachrichten).

Die Implementierung nutzt die BackgroundWorker-Klasse und nutzt in der Spitze 7 MySql- und 10 Access-Verbindungen gleichzeitig. Für MySql wird die Verbindung über den MySqlConnector v 5.2.5 genutzt.

Hinrich

N
numpsy Themenstarter:in
231 Beiträge seit 2007
vor 15 Jahren

den habe ich auch getestet... wie gesagt sql srv braucht weniger als ne sekunde für die gleiche abfrage...