Announcement

Collapse
No announcement yet.

Geschwindigkeitsbremse Npgsql?

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

  • Geschwindigkeitsbremse Npgsql?

    Hallo Gemeinde.

    Ich arbeite jetzt schon seit einigen Monaten mit Postgres auf lokalem Server über ADO.Net mit neuestem Treiber Npgsql2.dll und war bisher gut zufrieden damit.

    Jetzt ist ein interessantes Phänomen aufgetaucht:
    Ich habe eine Abfrage über mehrere Tabellen konstruiert und bekomme die ca. 630k Datensätze nach etwa 10 Minuten Bedenkzeit in meine Datatable serviert.
    Etwas lang, jedoch soweit in Ordnung. Aber:
    Die gleiche Abfrage mit dem pgAdmin dauert nur 2 Minuten!!!

    Die Erstellung eines Views bzw. das Laden der Daten aus einer Tabelle, nach erfolgter Tabellenerstellungsabfrage brachte keine nennenswerten Geschwindigkeitsänderungen.

    Jetzt meine Frage: Ist es möglich, dass die Daten durch Npgsql2 ausgebremst werden? Und wenn ja, gibt es eine schnellere Alternative?

  • #2
    Originally posted by Kyrrho View Post
    Jetzt meine Frage: Ist es möglich, dass die Daten durch Npgsql2 ausgebremst werden?
    Meine Vermutung: Es ist umgekehrt. Npgsql2 wird durch die Daten ausgebremst.

    Rechne dir doch bitte mal aus wieviel Daten (netto - ohne Overhead) bei 630000 Sätzen übertragen werden. Dazu brauchst du nur die Anzahl Bytes, die Dein Datensatz benötigt.
    Ich wette, da kommen ein paar MB zusammen.
    Zum Vergleich kannst Du ja eine Datei dieser Größenordnung mal im Netzwerk hin und her kopieren. Geht das schneller?

    Ich kenne das Tool nicht, aber Du musst unterscheiden, ob Dir die Technik
    1. Nur einen Cursormenge aufbaut
    2. Daten "liefert"
    3. Wenn liefert, dann wohin?
    > vom Server zum Client?
    > vom Server zu einer Webconsole?
    4. Wieviele Daten
    Gruß, defo

    Comment


    • #3
      Jetzt meine Frage: Ist es möglich, dass die Daten durch Npgsql2 ausgebremst werden? Und wenn ja, gibt es eine schnellere Alternative?
      Benutzt du in dieser Abfrage ByteA Spalten? Gefühlt benutzt Npgsql immer das extrem geschwätzige 'Escape' Format für den Transport von binär Daten anstatt 'Hex'. Details siehe Doku.

      Als Alternative kannst du mal die Controls von Devart ausprobieren ob die sich anders Verhalten. Kann mir da aber kein echtes Qualitätsurteil erlauben. Da das Closed Source ist habe ich dir bisher nie produktiv eingesetzt.

      Viele Daten in eine .Net Datatable zu packen dauert. Unabhängig von den benutzten Connection Komponenten. Da wären wir dann bei der Frage warum
      du soviele Daten in eine DataTable packst? DataTable macht eigentlich nur dann Sinn wenn du die an eine UI binden willst. Jemanden 630000 Datensätze zu präsentieren ist dann mehr ein Folterinstrument als eine UI.

      Comment


      • #4
        Originally posted by defo View Post
        Rechne dir doch bitte mal aus wieviel Daten (netto - ohne Overhead) bei 630000 Sätzen übertragen werden. Dazu brauchst du nur die Anzahl Bytes, die Dein Datensatz benötigt.
        Also ich habe die Daten mal als Textfile ausgegeben und komme auf knapp 118 MB. Seltsamerweise hat der pgAdmin dafür nur 9 Sekunden benötigt! Auch das Verschieben auf einen anderen Datenträger dauerte keine 3 Sekunden.

        Originally posted by Ralf Jansen View Post
        Benutzt du in dieser Abfrage ByteA Spalten?
        In meiner Abfrage kommen ausschließlich Text, Zahlen (meist integer) und Zeitstempel vor.

        Originally posted by Ralf Jansen View Post
        Als Alternative kannst du mal die Controls von Devart ausprobieren ob die sich anders Verhalten.
        Könnte ich vielleicht mal ausprobieren.

        Originally posted by Ralf Jansen View Post
        Viele Daten in eine .Net Datatable zu packen dauert. Unabhängig von den benutzten Connection Komponenten. Da wären wir dann bei der Frage warum du soviele Daten in eine DataTable packst?.
        Ich habe einige Anwender, die gerne den kompletten Datenbestand auf dem Bildschirm analysieren. Des Menschen Wille ist sein Himmelreich

        Comment

        Working...
        X