Einzelnen Beitrag anzeigen

christian_r
(Gast)

n/a Beiträge
 
#1

MySQL-Abfrage in Thread verpackt, trotzdem Programmbremse

  Alt 5. Jan 2009, 20:30
Ich habe eine permanente MySQL-Abfrage für mein Remote-Tool. Diese habe ich daher in einen Thread verpackt.
Ich verwende die Komponentensammlung "MySQL Direct".

Meine Tests liefen über die MySQL-Verbindung zu meinem "localhost" sehr flüssig. Nachdem ich nun eine Verbindung zu meinem Server online aufbaue, bremst die MySQL-Query das Programm trotz allem aus.

Delphi-Quellcode:
type
  TForm1 = Class( TForm )
    ThreadCommand : TThreadCommand;
    MySQL : TOMySQL; // Ein Wrapper für 'TMySQLClient' von MySQL Direct
  end;

// ...

Self.ThreadCommand := TOThreadCommandOrder.Create( True );
Self.ThreadCommand.FreeOnTerminate := True;
Self.ThreadCommand.Priority := tpNormal;
Self.ThreadCommand.MySQL := Self.MySQL;

// ...

procedure TThreadCommand.ProcessCommand
          ( );
var
  MySQLResult : TOMySQLResult; // Ein Wrapper für 'TMySQLResult' von MySQL Direct
begin
  if Assigned( Self.MySQL ) then
  begin
    MySQLResult := Self.MySQL.Query( 'SELECT * FROM `ubig_orders` LIMIT 0, 1' );
    // ...
  end;
end;
Ich kann versichern, dass das Problem nicht an den Wrappern für die MySQL-Klassen liegt. Ich habe den Quellcode in den Wrapper geprüft und festgestellt, dass der Aufruf von TMySQLClient.Query( ) bereits ausbremst.

Liegt es nun an meiner Art und Weise den Thread zu verwenden, was ich mir nicht vorstellen kann. Oder ist die MySQL Direct Komponente problematisch? Normalerweise sollte ich doch von dem Prozess im Thread nichts mitbekommen.
  Mit Zitat antworten Zitat