Delphi-PRAXiS
Seite 1 von 5  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Was ist schneller? MySqlDirect oder ueber die .dll? (https://www.delphipraxis.net/163762-ist-schneller-mysqldirect-oder-ueber-die-dll.html)

DelTurbo 14. Okt 2011 12:03

Datenbank: mysql • Version: 5 • Zugriff über: noch nicht

Was ist schneller? MySqlDirect oder ueber die .dll?
 
Hi, eine frage an die spezialisten. Ich habe ca. 800.000 einträge in einer SQLite3. Nun habe ich mit mysqldirect eine schleife gemacht, die die daten auf einen mysqlserver (Debian5) kopiert.

Das ist langsam ohne ende. Erst dachte ich die schleife geht nicht, da er lange auf 0% stand. Aber die schleife geht.

Wenn ich nun über die libmysql??.dll gehe, z.b. ZEOS, bekomme ich das irgendwie schneller?

Ich hatte schon überlegt Threads anzuschmeissen, aber ich brauche die LastInsertID.

Ich hoffe jemand hat eine idee...

Bernhard Geyer 14. Okt 2011 12:16

AW: Was ist schneller? MySqlDirect oder ueber die .dll?
 
Verwendest du auch prepared Statements?

jobo 14. Okt 2011 12:17

AW: Was ist schneller? MySqlDirect oder ueber die .dll?
 
Ist das eine einmalige Sache oder musst Du das häufiger machen?
Scheint mir eher eine Frage des Verfahrens als der Komponenten.

P.S.: Wie siehts mir Indizes, Triggern, Constraints auf der Zieltabelle aus?

DelTurbo 14. Okt 2011 12:26

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

Also, in der datenbank möchte ich meine USB-Platten, also die filenamen, grössen etc. speichern.

Ich habe 2 Tabellen. Einmal mit dem eigentlichen Pfadnamen (dort gibt es ein blobfeld mit den ids der dateien die zu dem path gehören). Und halt die Tabelle mit den eigentlichen dateinamen.

Eingefügt wird es über

INSERT INTO FilesTable(Filename,Size,Date) VALUES ("test",1,1); <-- achtung, nur ein beispiel!!!

Die LastInsertID merke ich mir und Trage sie in das blobfeld der 1. Tabelle ein.

Gibt es da was besseres, schnelleres als INSERT???

Neutral General 14. Okt 2011 12:32

AW: Was ist schneller? MySqlDirect oder ueber die .dll?
 
Arbeitest du denn mit Parametern und Prepare?

DelTurbo 14. Okt 2011 12:41

AW: Was ist schneller? MySqlDirect oder ueber die .dll?
 
Nein, so wie ich oben geschrieben habe. Da ist nix davor oder dahinter. Wenn du mir sagen könntest wie ich das anwende (mit der beispielzeile oben) dann wär ich dir dankbar.

jobo 14. Okt 2011 13:01

AW: Was ist schneller? MySqlDirect oder ueber die .dll?
 
Du trägst ID (welche? PK der Dateinamenssätze?) in ein BLOB Feld ein?
Das wäre nicht unbedingt ein klassisches Verfahren in RDBMS.
BLOB Verarbeitung ist inkl. caching usw auch nicht unbedingt das performanteste.

DelTurbo 14. Okt 2011 13:16

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

Zitat von jobo (Beitrag 1130464)
Du trägst ID (welche? PK der Dateinamenssätze?) in ein BLOB Feld ein?
Das wäre nicht unbedingt ein klassisches Verfahren in RDBMS.
BLOB Verarbeitung ist inkl. caching usw auch nicht unbedingt das performanteste.

Ich habe das Programm für sqlite3 gemacht. Da das blob feld kleiner ist, ist es über wlan schneller.

Natürlich hast du recht, alleine das man den blob Escapen muss wird er eh grösser.

Zu dem Prepare find ich leider garnix. Kann MySqlDirect das überhaupt? Oder gibt es einen anderen "trick" mit dem man z.b. sagen kann, pass auf hier kommen 50 datensätze.

Sorry ist was platt ausgedrückt

jobo 14. Okt 2011 13:34

AW: Was ist schneller? MySqlDirect oder ueber die .dll?
 
Ich verstehe glaub ich Deine Gründe für BLOB nicht richtig und vor allem was Du damit bezwecken willst. In dem Blob steht dann später eine Zahlenreihe von ID aus der anderen Tabelle?
Normalerweise würde man in der "Files" Tabelle ein Feld für den Verweis auf die ID des "Path"-Tabellensatzes spendieren. Dann könnte man es nachher auch normal mit SQL bearbeiten und abfragen, reporten, ..

Valle 14. Okt 2011 13:38

AW: Was ist schneller? MySqlDirect oder ueber die .dll?
 
Sehe ich das richtig, dass die SQLite-Datenbank bei dir lokal leigt und der Debian-Server im Internet steht? Dann ist wichtig wie schnell dein Internet ist. Hier würde es sich lohnen, die SQLite-Datenbank komplett hochzuladen und auf dem Server selbst in MySQL zu übertragen. Da gibt es auch mit Sicherheit schon vorgefertigte Tools.

Ansonsten muss es doch auch möglich sein, ähnlich wie bei "mysqldump" den Inhalt der SQLite-Datenbank als SQL zu exportieren. Dann kannst du ein Kompressionsverfahren (zB. bzip) drüber laufen lassen und es anschließend hochladen.

Liebe Grüße,
Valentin


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:12 Uhr.
Seite 1 von 5  1 23     Letzte »    

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