Servus,
ich habe hier eine Anwendung, die einen Haufen Daten importiert (mySQL 5.1). Ich hatte immer das Problem, dass bei mir die Anwendung Faktor 5-10 langsamer lief als auf dem Produktivsystem. Nie konnte mir einer erklären was ich falsch mache. Letzte Woche habe ich beim Anlegen einer neuen TestDB einen "Fehler" gemacht und UTF8-Unicode anstelle Latin-1 mit German verwendet. Und siehe da: Der Import lief so schnell ab, wie er eigentlich sollte. Auch die Gegenprobe war erfolgreich: mit Latin1 langsam mit utf8 schnell.
Hängt auch nicht an Lazarus, Datenbankkomponenten oder Connectionstring (verschiedenes versucht bzw,. lange Historie). Im Netz konnte ich mit meinen Suchbegriffen bisher nichts erhellendes finden. Hat hier vielleicht jemand eine Idee woher dieses Verhalten kommen kann? Codiert MySQL intern die Daten um, wenn die mit latin1 daher kommen?
Grüße
Seltsames Verhalten MySQL
-
- Lazarusforum e. V.
- Beiträge: 999
- Registriert: Do 17. Apr 2008, 01:59
- OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
- CPU-Target: Intel i7-10750 64Bit
- Wohnort: Freiburg
Re: Seltsames Verhalten MySQL
Keine Ahnung, verwende ausschließlich UTF8 und kenne auch niemanden, der was anderes verwendet.
Wozu benötigst du Latin-1, ich dachte das ist noch aus DOS-Zeiten ?
Wozu benötigst du Latin-1, ich dachte das ist noch aus DOS-Zeiten ?
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
Re: Seltsames Verhalten MySQL
Gute Frage: Die Projektübergabe war etwas schwierig. Wenn dann habe ich das so übernommen bzw. ist mir angetragen worden.MacWomble hat geschrieben: Wozu benötigst du Latin-1, ich dachte das ist noch aus DOS-Zeiten ?
- af0815
- Lazarusforum e. V.
- Beiträge: 6768
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Seltsames Verhalten MySQL
ZEOS oder SQLdb ?
Bei ZEOS habe ich in den Sourcen gesehen, das es scheinbar im Hintergrund die verschiedenen Systeme konvertiert. Das könnte Zeit benötigen wenn Einstellung Client <> Server. Bei SQLdb wäre ich noch nicht darüber gestolpert.
Bei ZEOS habe ich in den Sourcen gesehen, das es scheinbar im Hintergrund die verschiedenen Systeme konvertiert. Das könnte Zeit benötigen wenn Einstellung Client <> Server. Bei SQLdb wäre ich noch nicht darüber gestolpert.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: Seltsames Verhalten MySQL
weder noch. Als ich das Projekt übernahm war das in Delphi 7 mit ADO und ODBC, dann Umstellung auf XE6 mit MyDAC und jetzt Lazarus mit MaDac. Von ODBC auf MyDAC war es rund 25% schneller, aber immer noch bei mir deutlich langsamer als auf den Produktivsystemen. d.h. hing weder an der Sprache noch an den Komponenten...af0815 hat geschrieben:ZEOS oder SQLdb ?
- af0815
- Lazarusforum e. V.
- Beiträge: 6768
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Seltsames Verhalten MySQL
Keine Erfahrung mit MyDac bei mir.
Umstellung von ODBC auf MyDac, kann ich mir vorstellen, das es schneller ging. ODBC ist so ziemlich das generischte (und langsamste) was man nehmen kann
Reines ADO war nicht so langsam, damit habe ich doch einige Jahre unter Delphi 7 gearbeitet.
Normalerweise kodiert die lokale Treiberschicht um, damit das DB-System die Daten im richtigen Format bekommt. Das könntest du aber in den Sourcen verfolgen. Bei Lazarus musst du ja mit Sourcen von MyDac arbeiten (Zumindest laut Herstellerwebsite). Das ein konvertieren Zeit braucht ist klar. Die Frage ist auch, was ist die native Kodierung der MySQL-DB und der angelegten DB - UTF8 ?
DEFAULT CHARACTER SET = ?
DEFAULT COLLATE = ?
Charset Verbindung = ?
Passen die zusammen ? Siehe auch http://download.nust.na/pub6/mysql/doc/ ... ction.html
Umstellung von ODBC auf MyDac, kann ich mir vorstellen, das es schneller ging. ODBC ist so ziemlich das generischte (und langsamste) was man nehmen kann

Normalerweise kodiert die lokale Treiberschicht um, damit das DB-System die Daten im richtigen Format bekommt. Das könntest du aber in den Sourcen verfolgen. Bei Lazarus musst du ja mit Sourcen von MyDac arbeiten (Zumindest laut Herstellerwebsite). Das ein konvertieren Zeit braucht ist klar. Die Frage ist auch, was ist die native Kodierung der MySQL-DB und der angelegten DB - UTF8 ?
DEFAULT CHARACTER SET = ?
DEFAULT COLLATE = ?
Charset Verbindung = ?
Passen die zusammen ? Siehe auch http://download.nust.na/pub6/mysql/doc/ ... ction.html
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: Seltsames Verhalten MySQL
Da ich von Firebird komme, habe ich da peinlich drauf geachtet - musste aber irgend wann feststellen, dass das scheinbar völlig wurscht ist.af0815 hat geschrieben:Passen die zusammen ? Siehe auch http://download.nust.na/pub6/mysql/doc/ ... ction.html
Inzwischen habe ich rausgefunden, dass auf dem Produktivsystem utf8 mit utf8_unicode verwendet wird.
Ich schließe hier einfach mal, froh darüber, dass es bei mir jetzt auch schnell genug läuft
