Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi MySQL sau lahm (https://www.delphipraxis.net/30815-mysql-sau-lahm.html)

cheatzs 29. Sep 2004 18:01


MySQL sau lahm
 
Hi Leutz,
greife mit meinem Programm wie in Delphi-Source erklärt mit MySQL direct auf eine MySQL Datenbank zu.
Leider geht das echt lahm (hab 500 Mhz).
Weiß aber nicht an was das liegt. Um ca. 100 Datensätze hinzuzufügen (einschließlich Berechnungen von DateiHash MD5) brauch ich ca. 6 sek.

Genauso beim Laden verschiedener Datensätze.
Ich lasse mir diese in einem TListView (OwnerData) anzeigen. Je nachdem welcher Datensatz gerade gebraucht wird, wird derjenige eben dann geladen. Dauer auch hier für gesamten Aufbau der Tabelle ca. 3 sek.

Hier mal meine Zugriffs bzw. Schreib und Create-Prozeduren:

Delphi-Quellcode:
//Verbinden

SQLConnection:= TMysqlClient.Create;
  try
    with SQLConnection do
    begin
      Host := *Hostname*;
      Port := 3306;
      User := *User*;
      Password := *Passwort*;
      Db := *Datenbankname*;
      Connect;
    end;

//Hinzufügen

 if SQLConnection.Connected then
  begin
    DateSeparator := '-';
    ShortDateFormat := 'yyyy-mm-dd hh:mm:ss';
    SQLConnection.Query('INSERT INTO '+Table+' (sName, sPath, cLength, wPriority, wState, dtDate, sHash, cLastTimeSend, cDownloaded, wLevel) VALUES ('''+AFile.sName+''', '''+EscapeStr(AFile.sPath)+''', '+inttostr(AFile.cLength)+', '+inttostr(AFile.wPriority)+', '+inttostr(AFile.wState)+', '''+datetostr(AFile.dtDate)+''', '''+AFile.sHash+''', '+inttostr(AFile.cLastTimeSend)+', '+inttostr(AFile.cDownloaded)+ ', '+inttostr(AFile.wLevel)+')',FALSE,fExecuting);
    if Table = conWorkUnitdb then
      SQLConnection.Query('INSERT INTO wr_relation (sWorkUnitHash) VALUES ('''+AFile.sHash+''');',FALSE,fExecuting);
  end;

//Auslesen

if SQLConnection.Connected then
  begin
    if Assigned(SQLResult) then
      FreeAndNil(SQLResult);
    SQLResult := SQLConnection.Query('SELECT * FROM '+Table+' WHERE sHash = '''+sHash+''';',TRUE,fExecuting);
    result.sHash := '';
    if Assigned(SQLResult) then
    begin
      with SQLResult do
      begin
        result.sName := FieldValueByName('sName');
        result.sPath := FieldValueByName('sPath');
        result.cLength := StrToInt(FieldValueByName('cLength'));
        result.wPriority := StrToInt(FieldValueByName('wPriority'));
        result.wState := StrToInt(FieldValueByName('wState'));
        result.dtDate := StrToDateTime(FieldValueByName('dtDate'));
        result.cLastTimeSend := StrToInt(FieldValueByName('cLastTimeSend'));
        result.cDownloaded := StrToInt(FieldValueByName('cDownloaded'));
        result.wLevel := StrToInt(FieldValueByName('wLevel'));
        result.sHash := FieldValueByName('sHash');
      end;
    end
    else
      if not fExecuting then
        showmessage(SQLConnection.LastError);
  end;
Kann das an meinem Computer liegen? 500mhz 192mb RAM MySQL 4.018

Sind die Komponenten vielleicht so langsam (Zeos hab ich schon probiert ... ist noch langsamer .. dauert ca. 1 Minute)

Kann mir das einfach nicht erklären...

Gibts vielleicht schnellere Datenbanken? Paradox, dBase, FoxPro ?

Vielen Dank schon mal im Vorraus

Bye

supermuckl 29. Sep 2004 18:06

Re: MySQL sau lahm
 
das problem hab ich auch

bei nem 700 mhz pc mit 1gig ram
und mandrake 10 als OS

.. das teil war so lahm das ich meine geigene datenbank gecoded hab für eine spezielle anwendung.. das is nun 10 mal schneller

Alexander 29. Sep 2004 18:07

Re: MySQL sau lahm
 
Hi,
genau kann ich dir nicht helfen. Aber ich hatte damals mit einem Linux-Server (ähnlicher Rechner) und MySQL kaum Probleme. Allerdings habe ich nicht über Delphi drauf zu gegriffen und kann dazu nichts sagen.
In der Tat sind deine Werte ein wenig hoch, ich meine damals zwar auch recht langsame WErte gehabt zu haben, aber über 2 sec sind die bestimmt nicht gegangen.
Fakt ist aber, dass die Listview schon recht viel Zeit in ansrpuch nicht, um viele Daten anzuzeigen.
Aber auch hier kann man noch ein wenig "tunen", du kannst z.B. das Einfügen zwischen den Befehlen beginUpdate und endUpdate erledigen.
Außerdem gibt es auch noch geeignetere Listviews für mehr Daten, leider weiß ich nicht mehr den genauen Komponentennamen und kann dir auch keinen Link geben, aber vielleicht findest du hier in der DP etwas.
Die Komponente wurde hier jedenfalls schon einige Male erwähnt

supermuckl 29. Sep 2004 18:13

Re: MySQL sau lahm
 
die applikation war die gleiche, die die daten ausgewertet hat.. nur die zeos komponente hab ich halt durch meine eigenen klassen ausgewechselt ( TCP / IP )
das war dann highspeed pur.. und die mysql DBs haben auch 100% auslastung beim daten suchen und zurück geben.. also lags nicht am netzwerk, nicht an meiner client applikation sondern einfach nur am mysql wo da extrem viel rechnen musste ( fesptplatte is ne SCSI U 160 )

es war ein schlichtes query über datetime indiziert das ich immer ausgeführt hatte.. und das hat dann extrem rechenpower benötigt
"SELECT * FROM bla where datetime between a and b" oder so änlich

// die tabellen hatten um die 30-50 MB
und pro dataset etwa 10 felder mit varchar(20)

Alexander 29. Sep 2004 18:16

Re: MySQL sau lahm
 
Tja vielleicht habt ihr den Cache von MySQL irgendwie ausgeschaltet !?
Mehr fällt mir dazu nicht ein, ich bin allerdings auch nicht so der DB-Crack...

supermuckl 29. Sep 2004 18:18

Re: MySQL sau lahm
 
standard mysql installation unter linux

bzw windows.. das war das gleiche lahme teil unter der gleichen hardware

Alexander 29. Sep 2004 18:25

Re: MySQL sau lahm
 
Tja, da kann ich auch nicht helfen. Jedenfalls war es bei mir doch ein wenig schneller.
Und MySQL wird ja auch nciht gerade als langsam beschrieben. Sicherlich gibt es andere bessere DB's mit mehr Funktionalitäten, aber dann wieder nicht kostenlos...
Vielleicht weiß ja sonst noch wer weiter..

nailor 29. Sep 2004 18:31

Re: MySQL sau lahm
 
je nachdem, wie groß die dateien sind, könnte es auch am hash-berechnen liegen. lass das mal weg, wenn es dann immer noch dauert, ist wahrscheinlich wirklich mySQL schuld.

supermuckl 29. Sep 2004 18:33

Re: MySQL sau lahm
 
was meinste mit hash berechnen? das md5 gedöns ?.. das war in meinem fall nicht drin ;)

beim author schon..

cheatzs 29. Sep 2004 18:47

Re: MySQL sau lahm
 
Danke erstmal für die zahlreichen Antworten...

Ich bestimme den Hash-Wert im Moment von Dateien im Byte-Bereich (meistens so 8-10 Bytes).
Daran kann es also nicht liegen... (hab auch schonmal getestet, die Daten in nem Array zu speichern, ging ratz fatz)

Die Insert_Buffer_Size ist bei mir auf 8388608 (ich nehme an Bytes) gestellt.

Denk aber nicht, dass es daran liegt. Hab nach der Installation nicht daran geändert.

Ich hab mal gelesen, dass das Hinzufügen eines Indexes die Arbeit des SQL-Servers erleichtert.
Hab aber keinen gemacht...


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:55 Uhr.
Seite 1 von 2  1 2      

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