AGB  ·  Datenschutz  ·  Impressum  







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

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 2 von 5     12 34     Letzte » 
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Troisdorf
1.185 Beiträge
 
Delphi 2007 Architect
 
#11

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

  Alt 14. Okt 2011, 14:45
Neee, der Server steht nicht im Internet. Ausser du nennst meine abstellkammer Internet

Mit dem mysqldump ist mir auch klar. So hohle ich nachts immer backups. Aber das hat ja mit meinem MySqlDirect problem nix zu tun. Ich habe eben mal unter Windows einen MySql-Server drauf gemacht. Und auf dem gleichen system die 800.000 einträge reingeschrieben. Das war noch langsamer.

Kurz noch zu dem blob-feld. Daran sollten wir uns nun nicht aufhängen. Das ist bei sqlite3 schneller. Ich klicke z.b. auf einen Path. Da ich in dem moment die ID habe, brauch ich nur die "FilePointer" zu lesen und kann sie direkt anzeigen. Das ist bei WLAN schneller, als wenn ich nur einen Pointer zurück auf den path habe. Weil dann muss sqlite3 die ganze DB lesen. Die datenbank ist 300MB gross. Bis die durch das WLAN ist, ist der Akku leer

So, ich frage nun nochmal ganz gezielt.

1. Wäre es schneller wenn ich die libmysql??.dll nutze (z.b. über ZEOS)?
2. Wäre es dann möglich zig datensätze zu übertragen und die ids zu kommen? Mit IDs meine z.b. bei MySqlDirect den befehl LastInsertID bzw. sqlit3 GetLastInsertRowID.
oder
3. Gibt es einen "trick" bei MySqlDirect um sowas zu erreichen?

Gruss und danke im voraus
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.536 Beiträge
 
Delphi 11 Alexandria
 
#12

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

  Alt 14. Okt 2011, 14:52
Ich mag mich irren, aber AFAIK besteht MySQL Direct doch lediglich aus den Delphi-Übersetzungen der Header-Dateien der libmysql.dll, diese wird also bereits benutzt. Inwieweit damit jetzt Prepared-Statements möglich sind, entzieht sich aber meiner Kenntnis.
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: Troisdorf
1.185 Beiträge
 
Delphi 2007 Architect
 
#13

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

  Alt 14. Okt 2011, 15:01
Nei, das kann nicht sein. Ich habe keine libmysql.dll auf meinem system.
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Troisdorf
1.185 Beiträge
 
Delphi 2007 Architect
 
#14

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
 
#15

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: Troisdorf
1.185 Beiträge
 
Delphi 2007 Architect
 
#16

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.536 Beiträge
 
Delphi 11 Alexandria
 
#17

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: Troisdorf
1.185 Beiträge
 
Delphi 2007 Architect
 
#18

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
 
#19

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: Troisdorf
1.185 Beiträge
 
Delphi 2007 Architect
 
#20

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
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 17:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz