Einzelnen Beitrag anzeigen

dbdeath74

Registriert seit: 30. Aug 2005
53 Beiträge
 
#13

Re: Updates mit Zeos/MySQL dauert zu lange?

  Alt 13. Dez 2006, 14:37
Hallo,

öhmm welchen SQL Monitor meinst du?
Für mySQL kenne ich nur das was mir der mySQL Administrator mitliefert.

Hier mal 3 Sekunden Ausschnitt mit parametriesiertem Query.
Benutzt wird ZQuery Komponente. Meine Applikation bremst es auch nicht, die langweilt sich bei 5% Prozessorlast.
Beim der MSSQL version habe ich an dieser Stelle Prozessorlast ca 80%, einfach weil es viel schneller geht und er viel mehr zu tun hat.

MySQL schafft einfach nicht mehr wie ca 10 Updates pro sekunde
Aber auch der mySQL Dienst langweilt sich und hat kaum Prozessorauslastung(5%).

Die Tabelle aufm mySQL ist im InnoDB Format, hat einfach 4 Integer, 2 varchars und ein bit feld. Primary Key ist auf der ID über die ich ja auch das Update mache.
Ansonsten hat die Tabelle nur noch einen weiteren Index auf ein weiteres Feld das ich woanderst häufig zur Suche brauche.

Ich frage mich halt wer hier auf wenn und warum wartet *g

So baue ich die Query jetzt auf:
Delphi-Quellcode:
with QryLastScan do
    begin
      SQL.Clear;
      SQL.Add('UPDATE CMDB_Software_Scan SET LastScan =:ScanDate ');
      SQL.Add(', Aktiv = 1');
      SQL.Add(' WHERE ID = :ID');
    end;
Und so Rufe ich sie auf:
Delphi-Quellcode:
with QryLastScan do
begin
  ParamByName('ScanDate').AsString := QuotedStr(DateTimeToStr(scanDate));
  ParamByName('Id').AsInteger:= ScanId;
  ExecSQL;
end;
Und hier mal ein 3sec AUsschnitt ausm mySQL Administrator

SQL-Code:
061213 13:29:09    5 Query UPDATE CMDB_Software_Scan SET LastScan ='\'13.12.2006 13:10:58\'' , Aktiv = 1 WHERE ID = 2240
            5 Query UPDATE CMDB_Software_Scan SET LastScan ='\'13.12.2006 13:10:58\'' , Aktiv = 1 WHERE ID = 2241
            5 Query UPDATE CMDB_Software_Scan SET LastScan ='\'13.12.2006 13:10:58\'' , Aktiv = 1 WHERE ID = 2242
            5 Query UPDATE CMDB_Software_Scan SET LastScan ='\'13.12.2006 13:10:58\'' , Aktiv = 1 WHERE ID = 2243
            5 Query UPDATE CMDB_Software_Scan SET LastScan ='\'13.12.2006 13:10:58\'' , Aktiv = 1 WHERE ID = 2244
            5 Query UPDATE CMDB_Software_Scan SET LastScan ='\'13.12.2006 13:10:58\'' , Aktiv = 1 WHERE ID = 2245
            5 Query UPDATE CMDB_Software_Scan SET LastScan ='\'13.12.2006 13:10:58\'' , Aktiv = 1 WHERE ID = 2246
            5 Query UPDATE CMDB_Software_Scan SET LastScan ='\'13.12.2006 13:10:58\'' , Aktiv = 1 WHERE ID = 2247
            5 Query UPDATE CMDB_Software_Scan SET LastScan ='\'13.12.2006 13:10:58\'' , Aktiv = 1 WHERE ID = 2248
            5 Query UPDATE CMDB_Software_Scan SET LastScan ='\'13.12.2006 13:10:58\'' , Aktiv = 1 WHERE ID = 2249
061213 13:29:10    5 Query UPDATE CMDB_Software_Scan SET LastScan ='\'13.12.2006 13:10:58\'' , Aktiv = 1 WHERE ID = 2250
            5 Query UPDATE CMDB_Software_Scan SET LastScan ='\'13.12.2006 13:10:58\'' , Aktiv = 1 WHERE ID = 2251
            5 Query UPDATE CMDB_Software_Scan SET LastScan ='\'13.12.2006 13:10:58\'' , Aktiv = 1 WHERE ID = 2252
            5 Query UPDATE CMDB_Software_Scan SET LastScan ='\'13.12.2006 13:10:58\'' , Aktiv = 1 WHERE ID = 2253
            5 Query UPDATE CMDB_Software_Scan SET LastScan ='\'13.12.2006 13:10:58\'' , Aktiv = 1 WHERE ID = 2254
            5 Query UPDATE CMDB_Software_Scan SET LastScan ='\'13.12.2006 13:10:58\'' , Aktiv = 1 WHERE ID = 2255
            5 Query UPDATE CMDB_Software_Scan SET LastScan ='\'13.12.2006 13:10:58\'' , Aktiv = 1 WHERE ID = 2256
            5 Query UPDATE CMDB_Software_Scan SET LastScan ='\'13.12.2006 13:10:58\'' , Aktiv = 1 WHERE ID = 2257
            5 Query UPDATE CMDB_Software_Scan SET LastScan ='\'13.12.2006 13:10:58\'' , Aktiv = 1 WHERE ID = 2258
            5 Query UPDATE CMDB_Software_Scan SET LastScan ='\'13.12.2006 13:10:58\'' , Aktiv = 1 WHERE ID = 2259
            5 Query UPDATE CMDB_Software_Scan SET LastScan ='\'13.12.2006 13:10:58\'' , Aktiv = 1 WHERE ID = 2260
061213 13:29:11    5 Query UPDATE CMDB_Software_Scan SET LastScan ='\'13.12.2006 13:10:58\'' , Aktiv = 1 WHERE ID = 2261
            5 Query UPDATE CMDB_Software_Scan SET LastScan ='\'13.12.2006 13:10:58\'' , Aktiv = 1 WHERE ID = 2262
            5 Query UPDATE CMDB_Software_Scan SET LastScan ='\'13.12.2006 13:10:58\'' , Aktiv = 1 WHERE ID = 2263
            5 Query UPDATE CMDB_Software_Scan SET LastScan ='\'13.12.2006 13:10:58\'' , Aktiv = 1 WHERE ID = 2264
            5 Query UPDATE CMDB_Software_Scan SET LastScan ='\'13.12.2006 13:10:58\'' , Aktiv = 1 WHERE ID = 2265
            5 Query UPDATE CMDB_Software_Scan SET LastScan ='\'13.12.2006 13:10:58\'' , Aktiv = 1 WHERE ID = 2266
            5 Query UPDATE CMDB_Software_Scan SET LastScan ='\'13.12.2006 13:10:58\'' , Aktiv = 1 WHERE ID = 2267
            5 Query UPDATE CMDB_Software_Scan SET LastScan ='\'13.12.2006 13:10:58\'' , Aktiv = 1 WHERE ID = 2268
            5 Query UPDATE CMDB_Software_Scan SET LastScan ='\'13.12.2006 13:10:58\'' , Aktiv = 1 WHERE ID = 2269
            5 Query UPDATE CMDB_Software_Scan SET LastScan ='\'13.12.2006 13:10:58\'' , Aktiv = 1 WHERE ID = 2270
Ich habe jetzt mal testweise etwas gebastelt mit directSQL. Der Schafft auch nicht mehr wie 10 Updates pro sekunde

Transaktionen verwende ich nicht, da ich erstens alleine schreibzugriff habe und zweitens einfach nur ein Update machen will :p
Transaktionen sollten doch auch meines Wissens nichts mit der Geschwindigkeit zu tun haben, sondern es eher noch langsamer machen weil er ja Rollbackpunkte etc... bereithalten muss. Lasse mich aber gerne eines besseren belehren

Gruß Oliver
  Mit Zitat antworten Zitat