[NEWSboard IBMi Forum]
Seite 2 von 3 Erste 1 2 3 Letzte
  1. #13
    Registriert seit
    Oct 2013
    Beiträge
    171
    Viele Softwarehäuser haben sich für den internen Gebrauch eine Überwachung gebastelt, die, wenn ein Job zu sehr die anderen Leute behindert, die Priorität dieses Jobs heruntersetzt.
    Wenn 1. an den SQL-Statements wirklich nichts mehr zu optimieren ist, und 2. Indizes wirklich nichts mehr helfen, würde ich 3. daran denken, so was auch auf einem Produktivsystem einzusetzen, um nicht immer manuell eingreifen zu müssen.

  2. #14
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Zu 1. und 2.: dies halte ich für ein Gerücht, alles lässt sich optimieren und sei es, die SQL's in Einzelschritte zu zerlegen.
    Oft genug habe ich erlebt, dass Join-Beziehungen mittels temporärer Ergebnistabelle (create qtemp/mytemptable as select ...) um Faktoren schneller sind. Mitunter von Minuten zu Sekunden!
    Man bedenke, dass eine CTE/derived Table/Scalarer Subselect keine temporären Zwischentabellen ergeben sondern je Quellsatz zur Ausführung kommen.

    zu 3.: Klar, wenn man bei 1 und 2 nichts findet, landet man bei 3 was nicht wesentlich was bringt sondern nur Geld kostet.

    Und was die ominöse Prio angeht, so betrifft dies die "Häufigkeitsverteilung" auf der sog. Zeitscheibe.
    Bildlich gesprochen erhält jeder Job über die Prio entsprechende Anteile. Je mehr Job's im System, so geringer der %-Anteil. Zu verstehen ist das wie die Anzahl der Tortenstücke die durch die "Anzahl Jobs" * (100-Prio) berechnet werden und gleichmäßig verteilt sind.
    Jeder Job bekommt so eine definierte Ausführungszeit.
    Bei jedem I/O oder sonstigen Wartebefehlen wird die Zeitscheibe vorzeitig abgegeben, der Rest verfällt und genau davon lebt das System eigentlich.
    Wenn ein rechenintensiver Job seinen Zeitanteil nun voll ausschöpft, leiden alle anderen Jobs, die ihren Anteil vorzeitig aufgeben, extrem darunter.
    Wenn also bei z.B. 1000 Job's nur 1 einziger Job etwas weniger häufig dran kommt, seinen Anteil aber ausschöpft, ändert das am Gesamtverhalten des Systems nur unwesentliches.

    Bei Systemen mit wenigen Jobs (ich meine hier < 100) kann es da schon Auswirkungen bringen.

    Ggf. interessant ist eher "Zeitscheibe in Millisekunden", Dialog z.B. 2000, Batch 5000!
    D.h., wenn ein intensiver Rechenjob eben ohne IO-Unterbrechung 5 Sekunden rechnet wird er danach zwangsunterbrochen.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #15
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... bei Performance geht es oft wüst durcheinander:
    @"Optimierung" Statements: SQL ist an der Ergebnismenge orientiert! Wenn zwei Beschreibungen derselben Ergibnismenge unterschiedliche Laufzeiten haben, dann ist das eine Schwäche des Optimizers (das könnte nach dem nächsten PTF/RELEASE genau umge´kehrt sein - mit einer Ausnahme: mit optimize for n rows kann man den Optimizer beeinflussen.
    @Einzelschritte: Wenn man aus einem SQL Statement mehrere mit Zwischentabellen machen kann (manchmal geht das), dann kann man dadurch Richtung Selektivität forcieren, sprich: Extrakte ziehen, die man verjoint (kostet aber oft CPU, da man Lesezugriffe gegen CPU tauscht).
    @Zeitscheibe: beim ersten synchronen I/O (reinpagen von Platte) verliert man die CPU. I/O intensive Jobs erreichen also das Ende der Zeitscheibe fast nie - rumschrauben daran bringt hier eher nix.
    @Prio: die Job Prio kommt immer dann zum Zuge, wenn ein verdrängter Job wieder CPU haben will. Das heißt: auch ein Job mit Prio 99 kann ein System voll auslasten.
    @Speicherpools: Hier wird tatsächlich aufgeteilt, was allerdings bei den Einstellungen der meisten Systeme nicht wirklich zieht, die dynamische Steuerung macht die Reaktion auf Speicherfrass nur träger, verhindert diesen Effekt aber nicht.

    Die meisten Probleme mit der Datenbank liegen im Index Design! Sprich fehlende Indexe. Bevor man hier nicht untersucht hat, ist jede andere Maßnahme nicht sehr sinnvoll.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  4. #16
    Registriert seit
    Oct 2013
    Beiträge
    171
    Ja, 3. ist die letzte Möglichkeit, den Systembetrieb aufrechtzuerhalten, wenn ein User / Programm unerwartet ungewöhnlich viele Ressourcen benötigt. Das ist keine Optimierung; der Verursacher hat noch länger zu warten.
    Ich hab' auch schon mal ein Produktivsystem gesehen, wo interaktive Benutzer Klassen mit, wenn ich mich recht erinnere, 120000 msec (2 Minuten) max. CPU-Zeit hatten.
    Da gewöhnt man sich ganz schnell an, so ziemlich alles zu submitten, da sonst der Job beinhart endet.

  5. #17
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Bei Dialogjobs können in 8 Stunden da schon mal 2 Minuten zusammenkommen.

    Und was die "Optimierung" angeht so musst ich schon feststellen, dass das Programm je nach Datenmenge mal günstig oder ungünstig lief.
    Laut Debug-Diagnose wurde der Zugriffsplan immer neu erstellt und somit der Weg immer neu kalkuliert.

    Die "Extrakt"-Ziehung (das habe ich wirklich von Dieter gelernt), bringt dort mitunter gewaltige Vorteile, ins besonders wenn Derived Tables / CTE's mit GroupBy-Konstrukten gebaut und verjoint werden.
    Hier ist die temporäre Tabelle mit Index gewaltig im Vorteil.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #18
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... einen prestarted Job mit CPUTIME zu kastrieren macht überhaupt keinen Sinn - das ist sowieso nur ein Angst Anker gegen loopende Jobs.

    @Extrakte: Das war in der leider nicht mehr aktiven Bigdata Installation ein wichtiges Instrument...

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  7. #19
    Registriert seit
    Jul 2001
    Beiträge
    2.646
    Zitat Zitat von Mr-Ferret Beitrag anzeigen
    Innerhalb diesem System gibt es die Möglichkeit eigene Masken mit SQL-Abfragen zu generieren und den Usern zur Verfügung zu stellen. Da diese Abfragen zum Teil doch etwas mehr CPU benötigen und dadurch teilweise das System ausbremsen, war meine Idee, ich schraub die Prio runter, damit falls ein anderer "wichteiger" Job kommt dieser bevorzugt wird bzw. der normale Ablauf nicht darunter leidet.

    Die SQL Statements wurden schon soweit durchläuchtet, das unserer Meinung und auch Beraterseitig keine weiter Performance rausgeholt werden kann.

    Ich wollte nun eben für diesen einen User die Prio ändern, nicht für das ganze System oder andere User damit in mitleidenschaft ziehen.
    Ganz Einfach ist meinst einfach ganz falsch ;-) Wenn ein SQL viel CPU benötigt, hat das Gründe, die im Design liegen (wie Dieter und Baldur korrekt schreiben). Und wenn jeder User selbst sein Design machen kann (sprich, SQL in bairisch reintippt), wird es lustig. Wenn alle meinen, es ist performancemässig nichts mehr raus zu holen, wird gern mit neuer Hardware gewunken, oder (wie von mir pauschalisiert) mit demokratischer Bestrafung per Priorität. Aber damit ist das Problem ja nicht gelöst.

    Wenn Du nur für einen speziellen User die Prio ändern willst, dann halte Dich an die vorhandenen Vorschläge: CHGJOB wenn möglich. Alternativ ein Scriptle, das mittels WRKACTJOB prüft, was dieser User macht, und wenns ein QZDASOINIT ist mit CPU > 20%, dann eine zwangspause von 3-5 Sekunden (wirkt Wunder) und schlechterer Priorität.

    Kann beispielsweise auf der PUB1.DE ausprobiert werden.

    -h
    www.RZKH.de
    IBM Champion 2022, 2023, 2024
    IBM i Community Advocate https://www.youracclaim.com/badges/6...c-7ad4ba147af6
    Common / CEAC
    http://pub400.com

  8. #20
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Immer dann, wenn die User (auch bedienergeführt) in der Lage sind quasi eigene SQL's zu stricken, stöhnt man wieder über die Laufzeiten und Systemlasten.
    Der User ist mit der Antwortzeit unzufrieden, alle anderen User mit der Systemlast.
    Wenn der User mit der unglücklichen Abfrage und unzufriedenen Antwortzeit nun auch noch ausgebremst wird ist der Frust nicht zu vermeiden.
    Gerne werden sog. "Call-Center"-Anwendungen freie Suchmasken angeboten.
    Gerade hier kommt es aber auf intelligente Indizes und "starre" SQL's an die schnelle Antworten aus z.B. Millionen Adressen liefern können.
    Schließlich gibt es ja genug Methoden und Hilfsmittel (Textindizes) um genau obiges Hauptproblem nicht auftreten zu lassen.
    "Genug"- oder "Maximal"-Optimiert gibt es nicht, wenn es immer noch zu solchen CPU-Lasten kommt.

    Bestell doch mal Dieter ein, ich garantiere dir, dass der noch was findet.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  9. #21
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Immer dann, wenn die User (auch bedienergeführt) in der Lage sind quasi eigene SQL's zu stricken, stöhnt man wieder über die Laufzeiten und Systemlasten.
    Zuweilen ist ein langsames SQL Statement ein Zeichen für ein fehlerhaftes Statement, wenn man zum Beispiel bei einer Mandantenfähigen Datenbank den Mandant in einer where clause oder einer Join Bedingung weglässt, zieht kein Index mehr, das Ergebnis ist aber allenfalls zufällig richtig (wenn es nur einen Mandanten gibt, z.B.).
    Aber auch hiergegen kann man was machen, ein ordentliches View Layer für solche Auswertungen kann hier sehr hilfreich sein.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  10. #22
    Registriert seit
    Aug 2011
    Beiträge
    93
    Erst einmal herzlichen Dank für die zahlreichen und lehrreichen Antworten.
    Wir habe es geschaft mit ein paar zusätlichen Indexdateien die Antwortzeiten auf ein akzeptables neveau zu reduzieren.
    Bzgl. des Vorschlags:
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Bestell doch mal Dieter ein, ich garantiere dir, dass der noch was findet.
    würde ich gerne in Betracht ziehen, nur wer und wo ist Dieter? Wie kann ich den Mann erreichen?
    Danke!

    PS:
    Zitat Zitat von holgerscherer Beitrag anzeigen
    Und wenn jeder User selbst sein Design machen kann (sprich, SQL in bairisch reintippt), wird es lustig.
    Ja, ich komme aus Bayern, die SQL's sind aber nicht von mir von daher bin ich unschuldig, und glaubt es mir, in NRW (Bielefeld) da wohne ich jetzt, ist es bei weitem nicht so schön wie in Bayern.

  11. #23
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Betrachte die vorherige Antwort:
    D*B steht für Dieter Bender incl. Verweis auf die Homepage.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  12. #24
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Zitat Zitat von Mr-Ferret Beitrag anzeigen
    in NRW (Bielefeld) da wohne ich jetzt, ist es bei weitem nicht so schön wie in Bayern.
    ... Bielefeld? das gibt es doch gar nicht. Alleine die Angabe, dass das in Ost-West-Falen liegt sollte einen bereits misstrauisch werden lassen (es sei denn, man kommt aus Süd-Nord-Bayern - nicht zu verwechseln mit Nord-Süd-Bayern).

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. Anmeldebildschirm ändern, wie?
    By ulli in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 13-08-12, 08:47
  2. QZDASOINIT Job Prio und so...
    By homerun in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 09-11-06, 14:21
  3. MTU ändern bei Perle 594-e
    By sho1 in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 15-08-02, 11:56
  4. Systemname ändern
    By delphix in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 30-11-01, 14:42
  5. Primärsprache ändern
    By Arbi in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 04-10-01, 08:58

Tags for this Thread

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •