![]() |
Re: CPU Auslastung bei 10% und bei XP Home bei 70%
Zitat:
![]() |
Re: CPU Auslastung bei 10% und bei XP Home bei 70%
Vielleicht solltest du, um das Problem zu lösen, einfach das Konzept der Abfragen etwas abändern.
Wie hoika schon bemerkt hat, ist es bestimmt in den meisten Fällen nicht notwendig, alle paar Sekunden die kompletten Daten zweier gejointer Tabellen zu holen, um zu prüfen, ob eine neue Aufgabe ansteht. Ich habe so etwas Ähnliches auch schon gemacht und gehe dabei eigentlich meist so vor: 1) Wenn eine neue Aufgabe eingefügt wird, wird für das entsprechende "device" einfach nur ein boolsches Flag in einer Tabelle auf "1" gesetzt. (Beispiel: Feld "task_available" in einer Tabelle Namens "tasks" als Boolean-Type) 2) Dieses Flag (und zwar nur dieses) wird vom Client alle paar Sekunden abgefragt: ('SELECT task_available FROM tasks WHERE device_id='+MY_DEVICE_ID) 3) Ist das Flag "1", holt sich der Client die relevanten Daten (in deinem Fall die gejointen Tables) und setzt das Flag wieder auf "0". Somit ist der "Check-Aufwand" minimal und die CPU-Auslastung dürfte nichtmal zu spüren sein. Vielleicht bringt dir das ja was :) grüssle, Fin |
Re: CPU Auslastung bei 10% und bei XP Home bei 70%
Wenn du die CPU last senken willst installiere LAMP da MySQL unter Linux weniger last erzeugt.
|
Re: CPU Auslastung bei 10% und bei XP Home bei 70%
@blackfin, werde ich mir mal ein paar gedanken zu machen. Aber so kann ich das eigentlich nicht machen, weil die Jobs immer gleich bleiben und nur alle x Sekunden abgearbeitet werden.
@franktron, habe aber kein Linux. |
Re: CPU Auslastung bei 10% und bei XP Home bei 70%
Ich spendiere bei sowas den Tabellen einen Zeitstempel. Mit Select Max(Stempel) kann ich erst mal abfragen, ob überhaupt was getan werden muß
|
Re: CPU Auslastung bei 10% und bei XP Home bei 70%
Habe ja einen Zeitstempel.
40297,5131740972 und frage den so ab
Delphi-Quellcode:
Habe meine Sourcen jetzt ein wenig angepast.
sql := 'SELECT check_id, check_device_id FROM tabelle '+
'WHERE check_start_next < '''+FloatToStr(now)+''''+ 'GROUP BY check_device_id'; Mit den Tipps oben und habe die Sourcen ein wenig optimiert. Jetzt liegt die Auslastung bei 8% - 30%. Und wenn es was zu tun gibt bei ca. 60%. Aber ich konnte eine Aufgabe von 4 schon mal verbessern. Hier auf den schnellen Rechner habe ich das ganze wohl nicht so mitbekommen :D. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:58 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