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 4 von 5   « Erste     234 5      
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#31

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

  Alt 15. Okt 2011, 03:18
Genau so eine Änderung hat mir letztens (allerdings mit MySQL) auch etliche Minuten eingespart. Zur Sicherheit würde ich nur alle paar zig bis hundert Value-Vektoren ein neues Insert anfangen, da manche DBMS nicht so gut auf volle 2GB Strings zu sprechen sind
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
DelTurbo

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

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

  Alt 15. Okt 2011, 10:17
@Valle, danke für die auskunft. Ich habe gestern abend noch bissl "rumgespielt". Was ich garnicht wusste, man kann das autoinc feld ja auch beschreiben.

Ich habe gestern abend mal eine Tabelle gedropt und einfach einen eintrag mit ID 500 gemacht. Wenn ich danach wieder "normal" in die Tabelle schreibe, ist der nächste index 501. Das würde heissen das ich die db von sqlite3 1:1 rüberziehen kann.

@Medium, ich weiss noch garnicht wie lang der String sein darf. Bei sqlite3 ist z.b. eine grenze bei 1.000 values.

SELECT FileName FROM TABLE WHERE ID=1 OR ID=2 OR ID=3.....

Na meckert sqlite3 ab 1.000 rum das es zu gross ist. Er meckert definitiv die 1.000 IDs an. Nicht die Stringlänge.

Gruss und nochmals vielen dank
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#33

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

  Alt 15. Okt 2011, 10:54
Die schnellste Möglichkeit Daten in den MySQL zubekommen ist mit MySQL LOAD DATA INFILE

Allerdings frage ich mich auch noch, was das mit dem BLOB-Feld da auf sich hat?
Das kann ja nur dann zum Tragen kommen, wenn die SQLite-Datei im Netzwerk liegt ... ist das so?

Soll denn jetzt der MySQL die SQLite ersetzen?

Denn dann macht es keinen Sinn dieses BLOB weiter zu nutzen, denn die Zusammenstellung der Daten erfolgt bei MySQL ja auf dem Server und es wird nur noch das Ergebnis durch das Netz geschickt.
Andersherum ist es auch kein Problem, dass der MySQL per VIEW dir dieses BLOB-Feld (nicht als BLOB) dann direkt baut und mitschickt.

Liegt die SQLite lokal vor, dann macht das BLOB-Feld auch keinen Sinn ...

@Medium, ich weiss noch garnicht wie lang der String sein darf. Bei sqlite3 ist z.b. eine grenze bei 1.000 values.

Code:
SELECT FileName FROM TABLE WHERE ID=1 OR ID=2 OR ID=3.....
Na meckert sqlite3 ab 1.000 rum das es zu gross ist. Er meckert definitiv die 1.000 IDs an. Nicht die Stringlänge.
Dafür gibt es 2 Wege
Code:
SELECT FileName FROM TABLE WHERE ID IN (1,2,3,...)
oder man legt sich eine temporäre Tabelle mit den IDs an und
Code:
SELECT FileName FROM TABLE WHERE ID IN ( SELECT tmpID FROM tmpTABLE )
oder
Code:
SELECT FileName FROM TABLE JOIN tmpTABLE ON ID=tmpID
Ach ja und nicht vergessen einen INDEX (hier wohl geht wohl auch ein UNIQUE) auf die tmpTABLE zu legen
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (15. Okt 2011 um 11:02 Uhr)
  Mit Zitat antworten Zitat
DelTurbo

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

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

  Alt 15. Okt 2011, 11:09
Danke für die Tipps.

Du hast es bestimmt überlesen (steht irgendwo vorne). Die sqlite3 liegt im Netzwerk. Das macht an einem Client mit Kabel nix aus. Aber über WLAN wird es schnell langweilig....

Ob MySql nun die sqlite3 ersetzt weiss ich noch nicht. Dafür werde ich dann mal Speedtests machen, um zu sehen was besser ist. Weil beides hat seine vor und nachteile...

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
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!

Geändert von DelTurbo (15. Okt 2011 um 11:14 Uhr) Grund: Zitat gesucht
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#35

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

  Alt 15. Okt 2011, 11:31
Dann solltest du aber auch für die Tests mit dem MySQL dieses BLOB Feld nicht benutzen sondern den RDBMS Weg gehen

Lege doch einfach in der Tabelle mit den FileNamen den Verweis auf den Pfad mit rein,Mann kannst du beide Wege ausprobieren.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
DelTurbo

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

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

  Alt 15. Okt 2011, 11:34
Lege doch einfach in der Tabelle mit den FileNamen den Verweis auf den Pfad mit rein,Mann kannst du beide Wege ausprobieren.
Ist schon drinn
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#37

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

  Alt 15. Okt 2011, 11:48
Lege doch einfach in der Tabelle mit den FileNamen den Verweis auf den Pfad mit rein,Mann kannst du beide Wege ausprobieren.
Ist schon drinn
ich sehe wir verstehen uns
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
DelTurbo

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

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

  Alt 15. Okt 2011, 18:41
Kleine rückmeldung:
738.007 Datensätze bestehen aus

6x : int
1x : vchar (Da steht der Filename drinne)

in ~40 Sekunden. Gemacht mir MySqlDirect. Und es ich noch keine wietergehende optimierung drinn. Nur das wie oben besprochen wurde, also VALUES (1,"filename",2,3,4,5,6),(1,"filename",2,3,4,5,6) , usw.. Da packe ich immer 2.500 stück rein.

Nochmal danke.....
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
DelTurbo

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

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

  Alt 17. Okt 2011, 16:37
Wie versprochen die "Speed Rückmeldung"

Also, es ist wesentlich schneller wenn ich auf einen Path klicke und dann das FPtrs feld lese und mir die Fileinfos hohle, statt ihm zu sagen "Gib mir alle files die auf den Path zeigen". Das habe ich aber schon vermutet. Es ist halt ein unterschied ob er bei jedem "klick" ~730.000 datensätze absuchen muss, oder nicht.

Ich habe es unter gleichen vorrausetzungen gestestet. Der Debianserver war bei beiden versuchen neu gebootet.
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#40

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

  Alt 17. Okt 2011, 17:36
Aber du hast schon einen Index auf der Spalte Path?
Und die Spalte Path ist auch ein Int-Feld?

Code:
TABLE PATH
PATHID INT PRIMARY
PATHNAME VARCHAR
Code:
TABLE FILES
FILEID INT PRIMARY
PATHID INT INDEX <<--
FILENAME VARCHAR
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (17. Okt 2011 um 17:38 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


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 03:29 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