performancesteigerung
tomm
- php
0 Martin Hölter0 tomm
0 fanelf.de0 tomm
0 Vinzenz Mai
hallo zusammen,
ich habe mal eine frage zur steigerung der performance einer applikation... kurze beschreibung:
es handelt sich um eine in php entwickelte reporting software. dabei sind fragebögen in tabellen gespeichert. jeder fragebogen ist ein eintrag (zeile) und besitzt ca. 70 felder (spalten).
über verschiedene filterungen können auswertungen vorgenommen werden.
das läuft soweit ganz gut, bis auf einen filter bei dem eine gesamtauswertung (also über alle fragebögen mit allen feldern) vorgenomen wird. dabei werden die abfragen in temporären tabellen "zwischengelagert" und dann die werte in ein generiertes excel file geschrieben. zum generieren des excelfiles wird php-pear benutzt. bei diesem "gesamtfilter" kommt es zu starken zeiteinbussen. im günstigsten fall dauert es ca. 20min bis ein report fertig ist, wenn mehrere (ca. 4) user gleichzeitig ein report erstellen dauert es auch schonmal über eine std. bzw. es wird abgebrochen.
auf dem server läuft gleichzeitig ein cms für eine internetpräsenz (ca. 10000 hits/tag).
jetzt meine fragen:
hoffe, das war jetzt nicht allzu lang und unverständlich beschrieben. freue mich über jede info...
viele grüsse!
tomm
Hi!
Wie erfolgt denn die Speicherung in temporären Tabellen? Werden diese erst angelegt? Das ist verdammt teuer.
Gruß aus Iserlohn
Martin
es werden mit "create temporary table" diese Temptabellen angelegt und dann die aus der DB selektierten Werte mit "insert" eingefügt...
so mal ganz kurz... ;-)
das hört sich nach einem designfehler an. und zwischenlager klingt auch komisch.
aber möglicherweise sind die kriterienspalten nicht als index deklariert. überprüfe mal, ob die spalten auf die sich die kriterien beziehen indiziert sind.
das hört sich nach einem designfehler an. und zwischenlager klingt auch komisch.
aber möglicherweise sind die kriterienspalten nicht als index deklariert. überprüfe mal, ob die spalten auf die sich die kriterien beziehen indiziert sind.
es wird nach fast allen speichern selektiert... bin mir nicht sicher, ob es sinn macht auf ca. 60 spalten ein index zu legen...!?
Hallo
es handelt sich um eine in php entwickelte reporting software. dabei sind fragebögen in tabellen gespeichert. jeder fragebogen ist ein eintrag (zeile) und besitzt ca. 70 felder (spalten).
das ist schon einmal ein Designfehler :-) Wundervoll flexibel, diese Datenbank, bei einem neuen Fragebogen mit 80 Fragen ist die Tabelle ohne Änderung nicht mehr zu gebrauchen.
über verschiedene filterungen können auswertungen vorgenommen werden.
hört sich eher nach Missbrauch einer DB als Tabellenkalkulation an.
das läuft soweit ganz gut, bis auf einen filter bei dem eine gesamtauswertung (also über alle fragebögen mit allen feldern) vorgenomen wird.
Solche Zusammenfassungen sind oftmals mit SQL-Anweisungen recht einfach zu handhaben. Da ich aber nicht weiß, was in den Spalten steht und was die Gesamtauswertung daraus macht, kann ich mir kein endgültiges Urteil darüber erlauben
dabei werden die abfragen in temporären tabellen "zwischengelagert"
das kommt mir ungeschickt vor. Sollte im Normalfall nicht notwendig sein.
und dann die werte in ein generiertes excel file geschrieben. zum generieren des excelfiles wird php-pear benutzt.
Wie aufwendig ist das, ich kenne das Skript nicht. Ich weiß nur, dass man beim Automatisieren von Excel z.B. aus Access heraus früher zuschauen konnte, wie die einzelnen Zellen ausgefüllt wurden :-)
bei diesem "gesamtfilter" kommt es zu starken zeiteinbussen. im günstigsten fall dauert es ca. 20min bis ein report fertig ist,
wie umfangreich ist ein solcher "Report"? Es gibt übrigens wunderbare Reportgeneratoren (manche brauchen auch eine halbe Ewigkeit).
wenn mehrere (ca. 4) user gleichzeitig ein report erstellen dauert es auch schonmal über eine std. bzw. es wird abgebrochen.
auf dem server läuft gleichzeitig ein cms für eine internetpräsenz (ca. 10000 hits/tag).
es ist unclever, die Maschine mit der Excel-Report-Erstellung auszulasten, wenn die Internetpräsenz von dieser Maschine abhängt.
- würde ein hardwareupgrade ein performancebeginn für das reporting bringen?
wo ist der Flaschenhals? Was hast Du bisher herausgefunden? Ist die Prozessorlast bei 100% (wie z.B. bei der VBA-Automatisierung üblich) oder reicht der Speicher nicht? Oder ist der Flaschenhals wo ganz anders.
- bringt es was das cms bzw. homepage auszulagern?
Möglich.
- wo sehr ihr evt. schwachstellen
einige habe ich Dir aufgezeigt.
bzw. flaschenhälse bei o.g. umgebung?
wie wäre es, wenn Du die Flaschenhälse ermittelst? Schließlich hast Du Zugang zur Maschine, kannst Du die entsprechenden Werkzeuge nutzen. Mach das!
Wahrscheinlich wäre eine Neuprogrammierung der Software unter Berücksichtigung von effizienten Verfahren sinnvoll.
Freundliche Grüße
Vinzenz