Announcement

Collapse
No announcement yet.

Geschwindigkeit optimieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Geschwindigkeit optimieren

    Hallo,

    ich weiß es ist ein schwieriges Thema, dennoch möchte ich die Frage stellen.
    Vielleicht gibt es ja auch Wunder.

    Ich habe eine in die Jahre gekommene Software (Objekt Pascal programmiert).
    Der Hersteller macht eigentlich einen trägen Support, daher kann ich mir die Frage dort ersparen.
    (Ich denke auch, dass die Software nicht optimal programmiert ist.)

    Die Software greift auf Daten in einer Firebird Datenbank zu und stellt diese in Masken da.
    Teilweise wird mit den Daten auch gerechnet.
    Mein Problem ist, dass der Maskenaufbau träge ist.

    Die Software habe ich auf einem 4 Jahre alten PC und auf einer aktuellen 6 Core Maschine.
    Es gibt keinerlei Geschwindigkeit unterschied zwischen den deutlich unterschiedlichen PCs.
    Die Datenbank wird z.B. nur mit 4% oder auch manchmal gar nicht belastet, weil die Daten
    im Arbeitsspeicher sind. Das Netzwerk ist Gigabit und wird bei bestimmten Maskenaufbau
    auch nicht genutzt. Ein Prozessoraustausch von 2,4 auf 3,3 Mhz hat gar nichts gebracht.

    Wo könnte man etwas optimieren, damit die lahme Ente Flügel bekommt?

    Vielen Dank für Tips
    Gruß Iki

  • #2
    Hat Firebird einen Profiler?
    Ich tippe mal einfach darauf das hier auf SQL viel optimierungspotential besteht.

    Solltest du im Profiler viele Abfragen der Art "SELECT * FROM <TABELLE>" ohne Where-Bedingung sehen dürfte schon alles klar sein.

    Comment


    • #3
      Jetzt brauche ich etwas Führung.
      Wo könnte ich diesen Profiler finden?
      Wir haben FireBird 2.5.1 installiert. Von Firebird kenne ich nur die FireBird.cof Datei, dass
      man dort etwas configurieren kann.

      Comment


      • #4
        Wo könnte ich diesen Profiler finden?
        Einen universell einsetzbaren Profiler gibt es für Firebird leider nicht. Würde mich freuen wenn es anders wäre.

        Davon abgesehen was würde dir das helfen? Solltst du tatsächlich was finden was problematisch aussieht kannst du es vorraussichtlich ohne den Softwarehersteller nicht ändern. Ich bezweifle nach deine Beschreibung (kein Traffic keine CPU Last der Datenbank) auch das es daran liegt.

        Das Produktivste, wenn auch vielleicht nervig, ist den Support zu qualen. Die haben die Macht etwas zu ändern oder dich zumindest mit Informationen zu versorgen mit denen du dir dann selbst helfen kannst.

        Comment


        • #5
          ich möchte natürlich kein Profiler im Internet finden.
          Meine Frage war mehr gedacht,
          wo suche ich, ob ich einen Profiler habe?

          Diesen hätte man hier diskutieren können.

          Der Support antworte auf das Geschwindigkeiitsprolem mit Unwissen.
          Vielleicht sind sie für einen Tip dankbar.

          Comment


          • #6
            ich möchte natürlich kein Profiler im Internet finden.
            Warum nicht?
            Meine Frage war mehr gedacht,
            wo suche ich, ob ich einen Profiler habe?
            Firebird liefert wohl keinen mit

            Diesen hätte man hier diskutieren können.
            Wenn es nun keinen gibt....

            Der Support antworte auf das Geschwindigkeiitsprolem mit Unwissen.
            Nun, ich sehe das ähnlich wie Ralf, wenn du keinen Verkehr hast und keine CPU-Last, dann wird es wohl kaum an der DB liegen. Des Weiteren kannst du - wie ebenfalls Ralf schon sagte - dann keine Optimierungen vornehmen.

            Dann stelle dem Support entsprechende Unterlagen zur Verfügung. Beschreibe einzelne Vorgänge in der Anwendung und liste die Dauer dazu auf.
            Christian

            Comment


            • #7
              Ok,
              vielen Dank für Eure Informationen.
              Gruß
              Iki

              Comment


              • #8
                Im Falle von Firebird 2.5, kannst du die Trace API fürs Profiling verwenden. Artikel aus dem Entwickler Magazin:
                http://www.iblogmanager.com/download...rebird_2.5.pdf

                Tool-Support:
                http://www.upscene.com/go/?go=fbtm
                Thomas Steinmaurer

                Firebird Foundation Committee Member
                Upscene Productions - Database Tools for Developers
                Mein Blog

                Comment


                • #9
                  Lohnt es sich sich die Trace API näher anzusehen wenn ich mich in einer Firebird Embedded Umgebung bewege ode ist das ein reines Serverfeature?

                  Comment


                  • #10
                    Hallo Ralf,

                    die Trace API steht auch für Embedded zur Verfügung, allerdings muss man hier etwas tricksen, weil die für das Tracing benötigten Files (plugins Unterverzeichnis, fbtracemgr Kommandozeilentool) in der Firebird Embedded ZIP Distribution nicht enthalten sind. D.h. die muss man sich aus einer regulären Server ZIP Distribution korrekt für 32/64-bit rausholen.

                    Unter Verwendung des Kommandozeilentools fbtracemgr kann man dann ohne Angabe eines Servernamen/Port (Embedded kann ja nur mit dem lokalen Kommunikationsprotokoll genutzt werden) eine Trace Session starten, stoppen etc.

                    lg,
                    Thomas
                    Thomas Steinmaurer

                    Firebird Foundation Committee Member
                    Upscene Productions - Database Tools for Developers
                    Mein Blog

                    Comment


                    • #11
                      Danke Thomas

                      Dann werde ich mir das bei Zeiten mal genauer ansehen. Gerade beim fbtracemgr hatte/habe ich Vorstellungsprobleme das der sich an eine in Verwendung befindliche Datenbank hängt. Ich hatte gehofft das ich die API zumindest direkt aus dem Prozess verwenden kann die die Datenbank hält aber wenn der fbtracemgr auch einfach so funktioniert noch besser

                      Comment


                      • #12
                        Hallo Ralf,

                        die Trace API hängt sich nicht an eine Datenbank, sondern man verbindet sich über die Firebird "Services API" zu einem "Services Manager" des Firebird Servers. Beim Starten einer Trace Session muss man eine Trace-Config mitgegeben, die unter anderem auch eine Regular-Expression für den DB-Verbindungspfad beinhalten kann. Wenn man diesen "Datebankpfad-Filter" nicht verwendet, dann bekommt man halt die Aktionen auf allen DBs des Servers mit. D.h. die Trace API muss als serverweites Feature angesehen werden und geht nicht immer konkret auf eine Datenbank los. Das Ganze natürlich komplett entkoppelt von der eigentlichen Client-Anwendung.

                        Ich weiss nicht, welche Kenntnisse du über die Trace API bereits hast, aber ich hatte im Jänner 2012 mal einen Vortrag für eine Delphi User Group gegeben, wo ein Screen-Recording auf Youtube verfügbar ist:
                        http://www.youtube.com/watch?v=fLlktzDYB9M

                        Kannst ja nach Lust und Zeit mal reinschaun.

                        lg,
                        Thomas
                        Thomas Steinmaurer

                        Firebird Foundation Committee Member
                        Upscene Productions - Database Tools for Developers
                        Mein Blog

                        Comment

                        Working...
                        X