Announcement

Collapse
No announcement yet.

Performace Problem Delphi/Firebird

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

  • Performace Problem Delphi/Firebird

    Hallo,
    bin neu hier in der Runde und hoffe, jemand kann mir die Richtung weisen .

    OS : Windows
    FB 2.03 auf der Entwicklungsmaschine als Server , bei der Auslieferung z.T. als Embedded.
    IDE: Delphi6 ( mehr ist nicht greifbar)
    Ich nutze die IB Standardkomponenten (darf nichts kosten s. oben)

    Ich bin gerade dabei einige ältere Applikationen mit Paradox, neu auf Basis von Firebird zu realisieren.
    Erste zwei Programme sind bereits bei den Kunden und auch OK.
    Bei dem dritten Programm stockt es aber.
    Zum Problem:
    Bei einer (sehr breiten – 161 Spalten) Tabelle mit ca. 98.000 rows Dauert es sehr lange bis die Inhalte umsortiert werden.
    Fachlich bedingt soll jede der unzähligen Spalten p. Mouseklick sortierbar sein.
    Beim Query auf Spalte ohne Index dauert es bei default-Einstellung BufferChunks satte 54 Sekunden bis die Tabelle umsortiert ist. Bei Indizierten Spalten erheblich kürzer, an sich aber auch zu lange.
    Setzte ich BufferChunks hoch bekommt die Sortierung `nen Turbogang rein aber...
    Nach einigen Query-Sortierungen, egal ob zusätzliche Select-Einschränkungen da sind oder nicht, kommt die Exception der Klasse EOutOfMemory : Zu wenig Arbeitsspeicher.
    Dabei werden von den vorhandenen 2GB led. 560MB (für alles, samt Betriebssystem) verbraucht.
    Es sind durchgehend nur Leseoperationen, kein Insert oder Update. Alles p. Query. Jedes mal wird close/clear/add( für SQL – Statement - dynamisch, abhängig von Spalte)/open neu aufgesetzt.

    Fragen:

    - wie beschleunigt man das Lesen/Sortieren der Tabelle.
    Aufteilung, egal in welche Richtung, steht nicht zur Debatte – Alle Werte (90% der Spalten sind Zahlen) der Tabellenzeile müssen im einem dBGrid angezeigt werden. Auch alle Spalten müssen zum sofortigen Zugriff zugänglich sein.

    - wie stellt man den vermeintlichen Speichermangel ab?

    Ich weiß es – alles ein wenig verwischt und unpräzise, ist aber schwierig zu beschreiben. Vielleicht doch irgendwelche Tipps?


    Adam

  • #2
    Originally posted by ak7 View Post
    Beim Query auf Spalte ohne Index dauert es bei default-Einstellung BufferChunks satte 54 Sekunden bis die Tabelle umsortiert ist.
    As Designed. Deshalb gibt es ja Indexe.

    Originally posted by ak7 View Post
    Bei Indizierten Spalten erheblich kürzer, an sich aber auch zu lange.
    Was ist zu lange?

    Originally posted by ak7 View Post
    Nach einigen Query-Sortierungen, egal ob zusätzliche Select-Einschränkungen da sind oder nicht, kommt die Exception der Klasse EOutOfMemory : Zu wenig Arbeitsspeicher.
    Probier mal FastMM. Der Standard-Memory-Manager hat ein paar Fragmentierungsprobleme die genau das Problem verursachen können.

    Comment


    • #3
      als Ergänzung zu Bernhard:

      Was für eine Struktur hat deine Tabelle? Welche Komponenten benutzt du (table oder query)? wie sehen ggf. die Codes aus, die du beim umschalten ausführst?

      die meisten Grids verbrauchen sehr viel speicher bei breiten Tabellen, daher evtl auch noch mal schauen das du nicht lokal filterst oder irgendein recordcount startest

      Gruß
      Holger
      www.ibexpert.com

      Comment


      • #4
        Benötigst du wirklich 68000 Datensätze?

        Comment


        • #5
          Hallo,
          danke für die ersten Antworten.
          @Bernhard - Tipp mit FastMM scheint 1A zu sein - bis jetzt keine OutOfMemory mehr, bin aber erst am Montag weiter mit testetn, da ich heuet und am Wochenende einiges in Java machen muss.
          @Klemmo - ich nutze IBQuery's und als Grid-Komponenten die InfoPower Teile. Beim Umschalten werden SQL Statements neu aufgesetzt, wie ich bereits geschrieben habe.
          @Markus - nein nicht 68.000, eher 98.000.
          Ist nicht meine Idee. Der Kunde wünscht sich eine riesege Tabelle mit der Möglichkeit auf alles zugreifen zu dürfen.
          Die Aussage : "entweder bekomme ich das so wie ich es will, oder lasse in ... machen"
          Grüße,
          Adam

          Comment


          • #6
            ich würde ggf mal mit einem tool wie dem ibexpertsqlmonitor mal prüfen was da im hintergrund wirklich abläuft, ich gehe auch davon aus das sich das grid alle datensätze zieht, ohne das es sinn macht.

            Gruß
            Holger
            www.ibexpert.com

            Comment

            Working...
            X