![]() |
Re: Updates mit Zeos/MySQL dauert zu lange?
Zitat:
hörte sich in der Theorie klasse an *g :) Hat leider fast keine Geschwindigkeitsvorteile gebracht :( Gruß Oliver |
Re: Updates mit Zeos/MySQL dauert zu lange?
Hallo,
dann zeige doch noch mal diese Stelle, wie sieht es eigentlich mit Transaktionen aus ? Vor der Schleife StartTransaction und danach ein Commit; Und knips endlich den SQL-Monitor an ;) Heiko |
Re: Updates mit Zeos/MySQL dauert zu lange?
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:
Und so Rufe ich sie auf:
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;
Delphi-Quellcode:
Und hier mal ein 3sec AUsschnitt ausm mySQL Administrator
with QryLastScan do
begin ParamByName('ScanDate').AsString := QuotedStr(DateTimeToStr(scanDate)); ParamByName('Id').AsInteger:= ScanId; ExecSQL; end;
SQL-Code:
Ich habe jetzt mal testweise etwas gebastelt mit directSQL. Der Schafft auch nicht mehr wie 10 Updates pro sekunde :(
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 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 |
Re: Updates mit Zeos/MySQL dauert zu lange?
Bei den Zeos gibt es eine Komponente TZSQLMonitor. Falls diese aktiv ist protokolliert die alle Befehle und Fehlermeldungen mit, die über deine TZConnection wandern ;-) Falls man nur bestimmte Meldungen protokollieren will, sollte man sich das Ereignis OnLogTrace anschauen.
|
Re: Updates mit Zeos/MySQL dauert zu lange?
Hallo,
also unter Firebird (BDE, jaja ;) ) ist das so: Wird keine Transaktion manuell (DataBase.StartTransaction) gestartet, erzeugt die BDE für JEDE Abfrage eine Transaktion und Committed die. Das ist bei bestimmten Sachen um Faktor 20 langsamer, als einmal eine Transaktion zu starten, alle Updates machen und dann Committen. Sind die IDs eigentlich immer aufsteigend ohne Lücken ? Dann würde ja ein Where Id>=Min and Id<=Max reichen ;) :coder: Heiko |
Re: Updates mit Zeos/MySQL dauert zu lange?
Zitat:
GENIAL !!!! :love: :dp: :mrgreen: Faktor 20 ist gar kein Ausdruck *g hab jetzt 1/3 Sekunde pro Gerät statt 8 sec. Er macht wirklich wenn man nichts sagt jedesmal eine Transaction. Achja, MSSQL mit ADO Komponenten macht dies anscheinend nicht. Hier brachte Transaktion keinerlei Vorteile. Und nein die IDs sind nicht immer aufsteigend, das war nur Zufall weil es auf der Testversion war. Gruß Oliver |
Re: Updates mit Zeos/MySQL dauert zu lange?
Hm,
jetzt habe ich dich noch mehr an mysql rangebracht, statt dich für Firebird zu begeistern, ich Dussel ;) Egal. :cheers: Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz