AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi [Advantage] Komplexere Abfrage dauert ewig
Thema durchsuchen
Ansicht
Themen-Optionen

[Advantage] Komplexere Abfrage dauert ewig

Ein Thema von Nuclear-Ping · begonnen am 10. Sep 2007 · letzter Beitrag vom 16. Okt 2007
 
Nuclear-Ping
(Gast)

n/a Beiträge
 
#14

Re: [Advantage] Komplexere Abfrage dauert ewig

  Alt 16. Okt 2007, 15:35
Hallo,

bin nun mal dazu gekommen, die Funktion zu überarbeiten. Dabei habe ich generell den ganze Sende-Manager mal ausgemistet und ziemlich viel wegrationalisiert und auch das Konzept umgebaut.

Vorher war der Sende-Manager neben der komplexeren Query auch im Programm über 3 Klassen verstreut, mit Wartelisten, die wie bei nem Drucker abgearbeitet wurden, usw. Dabei hat er auch zig mal auf die Datenbank zugegriffen, weil ich ursprünglich beim Programmieren nie auf die Idee gekommen bin, dass da jemand soviele Aufträge reinhaut und das Programm damit so in die Knie geht.

Ich mache es nun so, dass ich mir einmal am Anfang, wenn der Sende-Manager gestartet wird, den ganzen Sendeplan hole, aufsteigend sortiert nach Sendedatum und sonst nix dazu. Also mit keinen Tabellen verknüpfen oder so ...

SQL-Code:
SELECT * FROM
  SendingSchedule
 WHERE
   Active=TRUE
 ORDER BY
   SendingTimestamp;
Bei der Datenbank mit den ~300.000 Datensätzen dauert diese Ausführung im Programm ca. 20sek. Separat hole ich mir dann die Klienten und deren Sendeindex und speichere sie in Arrays, woraus ich bei Bedarf zu einem Sendeauftrag den Klienten und Sendeindex hole (das dauert nur ein paar Ticks).

Dann arbeitet er halt die Liste ab, aktualisiert jeweils den Active-Status in der Datenbank und gut. Sollte sie irgendwann leer werden, wird sie wieder befüllt, was im schlimmsten Fall nochmal max. ~20sek dauert. Aber dazu muss er halt erstmal die 300.000 Einträge abarbeiten, und das wird meistens in einer Sitzung nicht passieren.

Also zusammengefasst kann man sagen, dass aus den ~60-70sek. nach jeder Sendung jetzt einmal ~20sek am Anfang des ganzen Sende-Vorgangs geworden sind. Nach jeder einzelnen Sendung braucht er nun ~1-2sek, um den Eintrag zu aktualisieren und den nächsten zu starten. Auf jeden Fall ne große Verbesserung.

Herzlichen Dank auch nochmal an dieser Stelle an Leonard / Tobias, der mir mit PNs bei dem Problem geholfen hat.

Grüße,

Mario


[edit]
Schreibfehler ...
[/edit]
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:24 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