AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Was ist schneller? MySqlDirect oder ueber die .dll?
Thema durchsuchen
Ansicht
Themen-Optionen

Was ist schneller? MySqlDirect oder ueber die .dll?

Ein Thema von DelTurbo · begonnen am 14. Okt 2011 · letzter Beitrag vom 17. Okt 2011
Antwort Antwort
Seite 1 von 2  1 2      
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.248 Beiträge
 
Delphi 2007 Architect
 
#1

AW: Was ist schneller? MySqlDirect oder ueber die .dll?

  Alt 14. Okt 2011, 15:42
Ich habe mal ZEOS mit der libmysql.dll probiert. Ist leider auch gääähn.... So habe ich es gemacht.

ZConnection1.ExecuteDirect('INSERT INTO FileTable (FileName,FileSize,FileDate,EntryDate,PathTablePtr) VALUES ("ddd",'+IntToStr(i)+',2,3,4);');

Bei ~290.000 habe ich abgebrochen. Ich denke mal ich mache das falsch. Kennt jemand eine "einfache" Demo?
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Was ist schneller? MySqlDirect oder ueber die .dll?

  Alt 14. Okt 2011, 16:08
Ich kenne Mysql nicht, aber so 300.000 Datensätze in 30 Minuten (?) finde ich garnicht so schlecht.
Je nach Verfassung des Netzes darf es auch weniger sein. Deinem Beispiel entnehme ich, daß Du keine Parameter nutzt, das wäre u.U auch noch ein Gewinn, da der SQL-String dann nicht jedesmal neu zusammen gesetzt werden muß.
Läßt Du einen Zähler mitlaufen (label1.caption:=inttostr(i); label1.repaint; dann solltest Du das vllt einmal einstellen, denn das frißt auch Zeit.

Wie sieht es eigentlich mit dem commit aus? So alle 10-100 Datensätze sollte das auch erfolgen, kommt aber stark auf das verwendete DBMS an.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.248 Beiträge
 
Delphi 2007 Architect
 
#3

AW: Was ist schneller? MySqlDirect oder ueber die .dll?

  Alt 14. Okt 2011, 16:18
Das findest du schnell? Da ist ja sqlite3 schneller. Aber wesentlich. Laut iptraf kommt der nur auf 2MBit. Find ich bissl dünn für ein 1000er netzwerk.

Diese Commit wie ich es bei sqlite3 mache braucht man wohl nicht. Die Datensätze waren da. Das war eine "normale" for schleife, ohne alles. Also an der Perfomance hier im Client kann es nicht liegen. Zumal die CPU noch fast im idle lief.

Ich nehme stark an, das es an den vielen kleinen TCP packeten liegt.

Deswegen frage ich ja, ob es ein kommando gibt, nach dem motto "hier kommen x datensätze". Die könnte er dann in einem rutsch liefern.
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#4

AW: Was ist schneller? MySqlDirect oder ueber die .dll?

  Alt 14. Okt 2011, 16:28
Gibt es bei ZEOS AutoCommit? Falls ja, kannst Du das ja mal testhalber abschalten, explizit eine Transaktion starten und alle z.B. 100 DS ein Commit schicken.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.248 Beiträge
 
Delphi 2007 Architect
 
#5

AW: Was ist schneller? MySqlDirect oder ueber die .dll?

  Alt 14. Okt 2011, 16:40
Hellseher?

AutoCommit war an. Ich habe es nun mal abgeschaltet und mache alle 10.000 (zum testen) ein Commit. Der Speed ist wirklich auf 3MBit hoch. Ist nicht berauchend, aber so langsam wird es was

Was mich nur wundert ist, das der Stream ständig da ist. Müsste das nicht so sein, das er nach 10.000 einen dicken batzen schickt?
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Was ist schneller? MySqlDirect oder ueber die .dll?

  Alt 14. Okt 2011, 16:49
Das commit ist dafür da, daß die Datenbank die Datensätze wirklich speichert und kein rollback mehr möglich ist.
Wenn Du für jeden DS einen Commit schickst, dann ist die Belastung des Servers rel niedrig, da er sich nicht merken muß was rückgängig zu machen ist.
Je mehr Datensätze Du einem Commit zuordnest, desto höher st die Belastung des Servers, aber die Netzlast geht etwas zurück.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.248 Beiträge
 
Delphi 2007 Architect
 
#7

AW: Was ist schneller? MySqlDirect oder ueber die .dll?

  Alt 14. Okt 2011, 16:53
Ah, ok. Dann habe ich das Falsch verstanden. Ich dachte er "sammelt" und das Commit schickt los.
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#8

AW: Was ist schneller? MySqlDirect oder ueber die .dll?

  Alt 14. Okt 2011, 16:56
Deswegen frage ich ja, ob es ein kommando gibt, nach dem motto "hier kommen x datensätze". Die könnte er dann in einem rutsch liefern.
Geht das nicht einfach mit mehreren VALUES-Klauseln?

Code:
INSERT INTO bla (...) VALUES (...) VALUES (...) VALUES (...)
Liebe Grüße,
Valentin
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.248 Beiträge
 
Delphi 2007 Architect
 
#9

AW: Was ist schneller? MySqlDirect oder ueber die .dll?

  Alt 14. Okt 2011, 17:10
Leider nicht. Wäre aber ne coole idee. Ich habe nun alles durch. Angefangen mit deinem vorschlage über nochmaliges INSERT in einer neuen, mit AND usw...

Hier z.b. der Fehler mit AND.

Code:
Fehler
SQL-Befehl:

INSERT INTO FileTable( FileName, NFOTablePTr, FileSize, FileDate, EntryDate, PathTablePtr )
VALUES (

"ddd", 1, 2, 3, 4, 5
)
AND (
FileName, NFOTablePTr, FileSize, FileDate, EntryDate, PathTablePtr
)
VALUES (
"ddd", 1, 2, 3, 4, 5
)

MySQL meldet:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND (FileName,NFOTablePTr,FileSize,FileDate,EntryDate,PathTablePtr) VALUES ("ddd' at line 1
Das ist leider dein vorschlag.

Code:
Fehler
SQL-Befehl:

INSERT INTO FileTable( FileName, NFOTablePTr, FileSize, FileDate, EntryDate, PathTablePtr )
VALUES (

"ddd", 1, 2, 3, 4, 5
)
VALUES (
"ddd", 1, 2, 3, 4, 5
)

MySQL meldet:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VALUES ("ddd",1,2,3,4,5)' at line 1
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!

Geändert von DelTurbo (14. Okt 2011 um 17:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#10

AW: Was ist schneller? MySqlDirect oder ueber die .dll?

  Alt 14. Okt 2011, 17:12
o0

Also eigentlich kenne ich das ohne das "AND (...)", genau wie ich es oben geschrieben habe.

Code:
INSERT INTO FileTable( FileName, NFOTablePTr, FileSize, FileDate, EntryDate, PathTablePtr )
VALUES (
"ddd", 1, 2, 3, 4, 5
)
VALUES (
"ddd", 1, 2, 3, 4, 5
)
Edit:// Waren da schon immer zwei Codeblöcke in deinem Post? :-O
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog

Geändert von Valle (14. Okt 2011 um 17:18 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz