Anzeige:
Ergebnis 1 bis 5 von 5

Thema: PostgreSQL: Speicherleck in PQexec?

  1. #1
    Registrierter Benutzer
    Registriert seit
    23.03.2001
    Beiträge
    650

    Question PostgreSQL: Speicherleck in PQexec?

    Beim Import von einigen Daten ist mein C-Programm nach ca. 50 Mio. Zeilen stehengeblieben und zwar bei PQexec.
    Ein Nachsehen mit top zeigt, daß der Speicherverbrauch gigantisch ist und die Ursache sein muß:

    PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
    32290 nobody0 15 0 1214m 615m 960 S 0 40.5 30:59.90 /home/nobody0/foo/bar/import_data1/import_data1

    Aber in dem C-Programm gibt es kein Malloc oder ähnliches und es werden auch nur einzelne Zeilen eingelesen und importiert.
    Hat PQexec oder eine andere PostgreSQL-Funktion ein Speicherleck?

  2. #2
    Registrierter Benutzer
    Registriert seit
    22.06.1999
    Beiträge
    677
    Ich vermute mal, dass Du selber das Speicherleck verusrsachst, weil Du PQclear vergisst. Zur Erinnerung:

    PQexec = Konstruktor von PGresult
    PQclear = Destruktor von PGresult

    Der im Konstruktor allocierte Speicher wird natürlich nur freigegeben, wenn der Destruktor aufgerufen wird.

  3. #3
    Registrierter Benutzer
    Registriert seit
    23.03.2001
    Beiträge
    650
    Achso; das ist mir neu, weil das im Buch, dessen Beispiele ich nur ausgebaut habe, nicht erwähnt wird und auch in den Beispielen fehlt

  4. #4
    Registrierter Benutzer
    Registriert seit
    22.06.1999
    Beiträge
    677
    Zitat Zitat von nobody0
    Achso; das ist mir neu, weil das im Buch, dessen Beispiele ich nur ausgebaut habe, nicht erwähnt wird und auch in den Beispielen fehlt
    Scheint ja kein vertrauenerweckendes Buch zu sein. Ein knappe aber vernünftige Zusammenfassung der Client-Programmeirung findest Du hier:
    http://lionel.kr.hs-niederrhein.de/~...Kap1.5-4up.pdf

  5. #5
    Registrierter Benutzer
    Registriert seit
    23.03.2001
    Beiträge
    650
    Ja, das Buch "Datenbank-Anwendungen mit PostgreSQL" machte zwar einen guten Eindruck und es ist gut lesbar, aber der Autor hat nicht viel Ahnung vom Thema, da nirgends PQclear erwähnt wird. Damit funktionieren die HelloWorld-Beispiele, aber nicht das Einlesen von ein paar Millionen Datensätzen.
    Über google findet man aber reichlich Beispiele, wo es richtig gemacht wird.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •